node.js - a node_modules/minimatch/dist/cjs/index"' nem exportált tagot tartalmaz 'IMinimatch' néven. A 'Minimatch' -re gondoltál?
A rimraf csomagot devDependency-ként telepítettem (v5.0.0). Amikor megpróbálok futtatni egy szkriptet a rimraf használatával, ezt a hibát kapom:
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
Manuálisan eltávolítottam a node_modules/@types/glob mappát, és a hiba eltűnt, a rimraf tökéletesen működik. A probléma az, hogy nincs a projektemben glob vagy minimatch, illetve azok típusai függőségként, így nem tudom eltávolítani a függőséget a probléma megoldásához.
Ezek azok a függőségek, amelyek a package.json fájlomban vannak:
"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"
}
Nem tudom, hogy csak a rimraf okozza-e a problémát, vagy lehet egy másik is.
Értékelem a válaszokat! :)
Válasz #1
Hasonló problémát oldottam meg egyszerűen azzal, hogy kényszerítettem a glob és a minimatch csomag felülírását. Lehet, hogy ez nem a helyes megoldás, de láttam, hogy sok beágyazott csomag különböző verziókat használ a minimatch és a glob esetében, így az első próbálkozásom a legújabb csomagok használata volt.
LÉPÉSEK
1- A package.json végére hozzáadtam a következőt
...
"overrides": {
"minimatch": "5.1.2",
"glob": "8.1.0"
},
...
2- Miután hozzáadtam a package.json-hoz, csak meg kell tisztítanom:
npm prune
Opcionális: Ha ez nem működik, próbáld meg eltávolítani a node_modules és a package-lock.json fájlokat
rm -rf node_modules; rm package-lock.json
és telepítse újra az összes modult/csomagot
npm telepítés
Itt a teljes példa, ha látni szeretnéd, hova kell beilleszteni a package.json fájlodba:
{
"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 dokumentáció
Válasz #2
Ha tippelnem kellene, úgy tűnik, hogy az egyik függőségednek problémája van a verzióval.
Megpróbálnám törölni a package.json fájlt és újratelepíteni.
A saját problémájáról itt is olvashat bővebben: https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/63967
SZERKESZTÉS: további kutatás után rájöttem, hogy ezekhez a konkrét függőségekhez tartozó @types csomagok okozhatják a problémát. Próbáld meg eltávolítani őket.
