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"