node.js - node_modules/minimatch/dist/cjs/index"' ไม่มีสมาชิกที่ส่งออกชื่อ 'IMinimatch' คุณหมายถึง 'Minimatch' หรือไม่?
ฉันมี rimraf เป็น devDependency (v5.0.0) เมื่อฉันพยายามรันสคริปต์ที่ใช้ rimraf มันจะแสดงข้อผิดพลาดนี้:
node_modules/@types/glob/index.d.ts:29:42 - error TS2694: Namespace '".../node_modules/minimatch/dist/cjs/index"' has no exported member 'IOptions'.
29 interface IOptions extends minimatch.IOptions {
~~~~~~~~
node_modules/@types/glob/index.d.ts:74:30 - error TS2724: '"...node_modules/minimatch/dist/cjs/index"' has no exported member named 'IMinimatch'. Did you mean 'Minimatch'?
74 minimatch: minimatch.IMinimatch;
~~~~~~~~~~
Found 2 errors in the same file, starting at: node_modules/@types/glob/index.d.ts:29
ฉันได้ลบโฟลเดอร์ node_modules/@types/glob ด้วยตนเองแล้วและข้อผิดพลาดก็หายไป rimraf ทำงานได้อย่างสมบูรณ์ ปัญหาคือฉันไม่มี glob หรือ minimatch หรือ types ของมันเป็น dependencies ในโปรเจกต์ของฉัน ดังนั้นฉันจึงไม่สามารถลบ dependency เพื่อแก้ไขปัญหาได้
นี่คือการพึ่งพาที่ฉันมีใน package.json ของฉัน:
"devDependencies": {
"@open-wc/building-rollup": "2.0.1",
"@open-wc/eslint-config": "7.0.0",
"@open-wc/testing": "3.1.3",
"@rollup/plugin-replace": "4.0.0",
"@typescript-eslint/eslint-plugin": "5.20.0",
"@typescript-eslint/parser": "5.20.0",
"@web/dev-server": "0.1.30",
"@web/test-runner": "0.13.27",
"@web/test-runner-puppeteer": "0.10.5",
"concurrently": "7.1.0",
"deepmerge": "4.2.2",
"eslint": "8.13.0",
"eslint-config-prettier": "8.5.0",
"husky": "7.0.4",
"lint-staged": "12.4.0",
"prettier": "2.6.2",
"rimraf": "5.0.0",
"rollup": "2.70.2",
"rollup-plugin-copy": "3.4.0",
"tslib": "2.3.1",
"typescript": "4.6.3"
}
ฉันไม่รู้ว่ามันเป็นแค่ rimraf ที่เป็นสาเหตุของปัญหาหรือไม่ หรืออาจจะเป็นอย่างอื่นก็ได้
ขอบคุณสำหรับคำตอบ! :)
คำตอบ #1
ฉันแก้ไขปัญหาคล้ายกันโดยการบังคับให้เขียนทับแพ็กเกจ glob และ minimatch บางทีนี่อาจไม่ใช่วิธีแก้ปัญหาที่ถูกต้อง แต่ฉันเห็นแพ็กเกจย่อยหลายตัวใช้เวอร์ชันต่างกันของ minimatch และ glob ดังนั้นความพยายามครั้งแรกของฉันคือใช้แพ็กเกจเวอร์ชันล่าสุด
ขั้นตอน
1- ฉันได้เพิ่มส่วนต่อไปนี้ไว้ที่ท้าย package.json
...
"overrides": {
"minimatch": "5.1.2",
"glob": "8.1.0"
},
...
2- หลังจากเพิ่มลงใน package.json แล้ว ฉันก็แค่ต้อง prune:
npm prune
ไม่บังคับ: ในกรณีที่วิธีนั้นใช้ไม่ได้ ลองลบ node_modules และ package-lock.json
rm -rf โฟลเดอร์ node_modules; rm ไฟล์ package-lock.json
และติดตั้งโมดูล/แพ็กเกจทั้งหมดใหม่อีกครั้ง
ติดตั้ง npm
นี่คือตัวอย่างเต็มถ้าคุณต้องการดูว่าควรเพิ่มที่ไหนในไฟล์ package.json ของคุณ:
{
"name": "foo",
"version": "0.0.0",
"dependencies": {
"express": "expressjs/express",
"mocha": "mochajs/mocha#4727d357ea",
"module": "user/repo#feature/branch"
},
"overrides": {
"minimatch": "5.1.2",
"glob": "8.1.0"
}
}
เอกสารประกอบ NPM
คำตอบ #2
ถ้าฉันต้องเดา ดูเหมือนว่าหนึ่งใน Dependencies ของคุณกำลังมีปัญหาเกี่ยวกับเวอร์ชัน
ฉันจะลองลบไฟล์ package.json แล้วติดตั้งใหม่
คุณยังสามารถอ่านเพิ่มเติมเกี่ยวกับปัญหาของคุณได้ที่นี่: https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/63967
แก้ไข: หลังจากค้นคว้าเพิ่มเติม ฉันพบว่าแพ็กเกจ @types สำหรับการพึ่งพาเหล่านี้อาจเป็นสาเหตุของปัญหา ลองลบออกดู
