node.js - node_modules/minimatch/dist/cjs/index"' tidak memiliki anggota yang diekspor bernama 'IMinimatch'. Apakah maksud Anda 'Minimatch'?


Saya memiliki rimraf sebagai devDependency (v5.0.0). Ketika saya mencoba menjalankan skrip menggunakan rimraf, itu memberi saya kesalahan ini:

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

Saya secara manual menghapus folder node_modules/@types/glob dan kesalahan itu hilang, rimraf bekerja dengan sempurna. Masalahnya adalah saya tidak memiliki glob atau minimatch atau tipenya sebagai dependensi dalam proyek saya, jadi saya tidak dapat menghapus dependensi tersebut untuk menyelesaikan masalah.

Ini adalah dependensi yang saya miliki di package.json saya:

"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"
  }

Saya tidak tahu apakah hanya rimraf yang menyebabkan masalah ini, atau bisa jadi yang lain.

Menghargai jawabannya! :)

Jawaban #1

Saya menyelesaikan masalah serupa dengan memaksa untuk menimpa paket glob dan minimatch. Mungkin ini bukan solusi yang tepat, tetapi saya melihat banyak paket bersarang menggunakan versi berbeda untuk minimatch dan glob, jadi percobaan pertama saya adalah menggunakan paket terbaru.

LANGKAH-LANGKAH

1- Saya menambahkan di akhir package.json yang berikut

 ... 
 "overrides": {
    "minimatch": "5.1.2",
    "glob": "8.1.0"
  },
 ...

2- Setelah menambahkan ke package.json, saya hanya perlu memangkas:

npm prune

Opsional: Jika itu tidak berhasil, coba hapus node_modules dan package-lock.json

rm -rf node_modules; rm package-lock.json

dan instal lagi semua modul/paket

npm install

Berikut contoh lengkapnya jika Anda ingin melihat di mana menambahkannya di dalam package.json Anda:

{
  "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"
  }
}

Dokumentasi NPM

Jawaban #2

Kalau saya harus menebak, sepertinya salah satu dependensi Anda mengalami masalah dengan versinya.

Saya akan mencoba menghapus package.json dan menginstal ulang.

Anda juga dapat membaca lebih lanjut tentang masalah khusus Anda di sini: https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/63967

EDIT: setelah melakukan penelitian lebih lanjut, saya menemukan bahwa paket @types untuk dependensi tertentu ini mungkin menyebabkan masalah. Coba hapus paket tersebut.

Artikel terkait