javascript - Problem med å legge til tredjeparts (ekstern) js-bibliotek i angular5


Jeg jobber med å legge til jsplumb community js-bibliotekversjon med Angular 5-applikasjonen (Angular CLI: 1.6.1).

Med den første byggingen uten noen konfigurasjon til tsconfig.json får jeg følgende feil.

ERROR in src/app/jsplumb/jsplumb.component.ts(4,25): error TS6143: Module '../../../node_modules/jsplumb/dist/js/jsplumb.js' was resolved to 'D:/myproj/angular5/myapp/node_modules/jsplumb/dist/js/jsplumb.js', but '--allowJs' is not set.

Med "allowJs":true i tsconfig.json får du følgende feil

ERROR in error TS5055: Cannot write file 'D:/myproj/angular5/myapp/node_modules/jsplumb/dist/js/jsplumb.js' because it would overwrite input file.
  Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.

I henhold til tsconfig FAQ

Hvorfor får jeg feilen TS5055: Kan ikke skrive filen 'xxx.js' fordi det ville overskrive inngangsfilen.

med en outDir ("outDir": "./dist/out-tsc") bør dette problemet løses. Dette er allerede satt i min tsconfig.

Hvis vi legger til noEmit til true, bygger det enkelt og greit applikasjonen, uten å inkludere noen js, får vi en tom hvit skjerm.

Gi meg beskjed hvis noen har prøvd å inkludere ekstern js med ny Angular CLI og møtt samme type feil, og hva løsningen for det samme er.

Uten noen ekstra alternativ lagt til i tsconfig.json, hvis jeg prøver å endre en hvilken som helst ts-fil, vil applikasjonen kompileres med suksess, og jeg kan arbeide. Men dette hjelper ikke når jeg kjører ng build for å lage en distribuérbar binær fil.

Oppdateringsløsning: inntil fiksen i CLI er tilgjengelig. For utvikling (ng serve) fjern allowJs fra tsconfig.json, når du får en feil ved å legge til allowJs, endre ganske enkelt en ts-fil for å kompilere applikasjonen på nytt, denne gangen vil den kompilere med suksess. For produksjon eller distribusjon, legg tilbake allowJs i tsconfig.json og kjør applikasjonen med ng build --prod --watch=auto. Du bør se feilen om å overskrive JS-filen i node_module, endre ganske enkelt en ts-fil, den skal bygge på nytt siden --watch=auto er i kommandoen, men denne gangen med suksess.

Svar #1

Hvis du prøver å importere et bibliotek til Angular 2+, bør du gjøre det inne i angular-cli.json.

Der har du en scripts-nøkkel hvor du bør konfigurere de ønskede importene. De er generelt som:

{
    ...
    "scripts": [
        "../node_modules/MODULE/file.js"
    ],
    ...
}

Du kan også importere biblioteket (ikke anbefalt) inne i din hoved index.html, ved å bruke <script src="/sti_relativ_til_roten/fil.js">

https://github.com/angular/angular-cli/wiki/angular-cli

https://github.com/angular/angular-cli/wiki/stories-global-scripts

Angular Cli Webpack, hvordan legge til eller pakke eksterne js-filer?

Svar #2

Har du prøvd å oppgradere det til Angular 6? Kanskje de har fikset dette i den nye versjonen.

ng update @angular/cli

Relaterte artikler