node.js - node_modules/minimatch/dist/cjs/index"' har ingen eksportert medlem kalt 'IMinimatch'. Mente du 'Minimatch'?


Jeg har rimraf som en devDependency (v5.0.0). Når jeg prøver å kjøre et skript som bruker rimraf, får jeg denne feilen:

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

Jeg fjernet manuelt node_modules/@types/glob-mappen, og feilen er borte, rimraf fungerer perfekt. Problemet er at jeg ikke har glob eller minimatch eller typene deres som avhengigheter i prosjektet mitt, så jeg kan ikke fjerne avhengigheten for å løse problemet.

Dette er avhengighetene jeg har i min 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"
  }

Jeg vet ikke om det bare er rimraf som forårsaker problemet, eller om det kan være en annen.

Setter pris på svarene! :)

Svar #1

Jeg løste et lignende problem bare ved å tvinge til å overstyre glob og minimatch-pakken. Kanskje det ikke er den riktige løsningen, men jeg så mange nestede pakker som brukte forskjellige versjoner av minimatch og glob, så mitt første forsøk var å bruke de nyeste pakkene.

TRINN

1- Jeg la til på slutten av package.json det følgende

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

2- Etter å ha lagt til i package.json, trenger jeg bare å beskjære:

npm prune

Valgfritt: Hvis det ikke fungerer, prøv å fjerne node_modules og package-lock.json

rm -rf node_modules; rm package-lock.json

og installer alle moduler/pakker på nytt

npm install

Her er hele eksemplet hvis du vil se hvor du skal legge til inne i din 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-dokumentasjon

Svar #2

Hvis jeg måtte gjette, ser det ut til at en av avhengighetene dine har et problem med versjonen.

Jeg ville prøvd å slette package.json og installere på nytt.

Du kan også lese mer om ditt spesifikke problem her: https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/63967

REDIGER: Etter litt mer research fant jeg ut at @types-pakkene for disse spesifikke avhengighetene kan være årsaken til problemet. Prøv å fjerne dem.

Relaterte artikler