angular - Eroare la utilizarea importului ES Module pentru object-set-all-values-to
Într-un proiect Angular 6 încerc să folosesc pachetul npm object-set-all-values-to 3.9.45. Am făcut următoarele:
1- L-am instalat folosind npm i object-set-all-values-to ✔️ OK
2- Am încercat să-l import ❌ Eroare
- prima opțiune
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';`
- A doua opțiune:
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';`
Așadar, cum pot rezolva această problemă❔
Această alternativă (const setAllValuesTo=require('object-set-all-values-to');) funcționează, dar nu o pot folosi din cauza regulilor stricte de stil de cod din proiectul meu.
Am încercat deja fără succes ceea ce se propune pentru a rezolva probleme similare în:
- Nu s-a putut găsi un fișier de declarație pentru modulul 'module-name'. '/path/to/module-name.js' are implicit tipul 'any'
De exemplu, pune deasupra liniei de import // @ts-ignore și de asemenea declară modulul într-un fișier src/typings.d.ts:
declare module 'object-set-all-values-to' {
export default function setAllValuesTo(inputOriginal: any, valueOriginal: any): any
}
Acestea îmi dau următoarea eroare: object_set_all_values_to_1.default nu este o funcție.
De asemenea, am încercat npm install @types/object-set-all-values-to, dar se pare că nu există types definite pentru acesta deoarece primesc npm ERR! code E404.
Unele valori de configurație posibil relevante din tsconfig.json sunt:
{
"compilerOptions": {
// ...
"lib": [
"dom",
"es2018.promise",
"es2015"
],
"moduleResolution": "node",
"module": "commonjs",
"target": "es5",
"noImplicitAny": true,
// ...
}
}
Am încercat să schimb noImplicitAny în false și eroarea raportată a dispărut, dar primesc object_set_all_values_to_1.default nu este o funcție menționată
Am raportat deja problema autorului pachetului, dar până acum nu am primit niciun răspuns.
Răspuns #1
Dacă compilerOptions.module este commonjs, se folosește un modul UMD. În acest caz, importați această bibliotecă astfel
import * as setAllValuesTo from 'object-set-all-values-to';
Răspunsul #2
Uitându-mă la configurația ta, cred că problema este legată de configurarea definiției modulului setată pe commonjs, schimb-o în esnext:
"module": "esnext"
