Weboldal keresés

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.

Kapcsolódó cikkek