ค้นหาเว็บไซต์

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 สำหรับการพึ่งพาเหล่านี้อาจเป็นสาเหตุของปัญหา ลองลบออกดู

บทความที่เกี่ยวข้อง