angular - Fel vid användning av ES Modul-import för object-set-all-values-to
I ett Angular 6-projekt försöker jag använda npm-paketet object-set-all-values-to 3.9.45. Jag gjorde följande:
1- Installerade det med npm i object-set-all-values-to ✔️ OK
2- Försökte importera det ❌ Fel
- 1:a alternativ
import setAllValuesTo from 'object-set-all-values-to';Could not find a declaration file for module 'object-set-all-values-to'. '<my-project-path>/node_modules/object-set-all-values-to/dist/object-set-all-values-to.cjs.js' implicitly has an 'any' type.
Try `npm install @types/object-set-all-values-to` if it exists or add a new declaration (.d.ts) file containing `declare module 'object-set-all-values-to';`
- Andra alternativet:
import setAllValuesTo from 'object-set-all-values-to/dist/object-set-all-values-to.esm.js';Could not find a declaration file for module 'object-set-all-values-to'. '<my-project-path>/node_modules/object-set-all-values-to/dist/object-set-all-values-to.esm.js' implicitly has an 'any' type.
Try `npm install @types/object-set-all-values-to` if it exists or add a new declaration (.d.ts) file containing `declare module 'object-set-all-values-to/dist/object-set-all-values-to.esm.js';`
Så, hur kan jag lösa detta problem❔
Detta alternativ (const setAllValuesTo=require('object-set-all-values-to');) fungerar men jag kan inte använda det på grund av strikta kodstilregler i mitt projekt.
Jag har redan försökt utan framgång det som föreslås för att lösa liknande problem i:
- Kunde inte hitta en deklarationsfil för modulen 'module-name'. '/path/to/module-name.js' har implicit typen 'any'
Till exempel, sätt ovanför importraden // @ts-ignore och deklarera också modulen i en src/typings.d.ts-fil:
declare module 'object-set-all-values-to' {
export default function setAllValuesTo(inputOriginal: any, valueOriginal: any): any
}
Dessa ger mig följande fel: object_set_all_values_to_1.default is not a function.
Jag försökte också npm install @types/object-set-all-values-to men det verkar som att det inte finns några typer definierade för det eftersom jag får npm ERR! code E404.
Några eventuellt relevanta konfigurationsvärden i tsconfig.json är:
{
"compilerOptions": {
// ...
"lib": [
"dom",
"es2018.promise",
"es2015"
],
"moduleResolution": "node",
"module": "commonjs",
"target": "es5",
"noImplicitAny": true,
// ...
}
}
Jag försökte ändra noImplicitAny till false och felet som rapporterades försvann men jag får det nämnda object_set_all_values_to_1.default är inte en funktion
Jag rapporterade redan problemet till paketets författare men har inte fått något svar än.
Svar #1
Om compilerOptions.module är commonjs, används en UMD-modul. I detta fall, importera detta bibliotek som
import * as setAllValuesTo from 'object-set-all-values-to';
Svar #2
Om man tittar på din konfiguration, tror jag att problemet ligger i moduldefinitionskonfigurationen som är inställd på commonjs, ändra den till esnext:
"module": "esnext"
