Ich möchte Chart.js in meinem Angular-Projekt verwenden. In früheren Angular2-Versionen habe ich dies gut gemacht, indem ich eine 'chart.loader.ts' verwendet habe, die Folgendes enthält:
export const { Chart } = require('chart.js');
Dann im Komponentencode ich gerade
import { Chart } from './chart.loader';
Nach dem Upgrade auf CLI 1.0.0 und Angular 4 wird jedoch die Fehlermeldung "Name 'erforderlich' kann nicht gefunden werden" angezeigt.
So reproduzieren Sie den Fehler:
ng new newapp
cd newapp
npm install chart.js --save
echo "export const { Chart } = require('chart.js');" >> src/app/chart.loader.ts
ng serve
In meiner 'tsconfig.json' habe ich
"typeRoots": [
"node_modules/@types"
],
Und in 'node_modules/@types/node/index.d.ts' gibt es:
declare var require: NodeRequire;
Also bin ich verwirrt.
Übrigens stoße ich ständig auf die Warnung:
[tslint] The selector of the component "OverviewComponent" should have prefix "app"(component-selector)
Obwohl ich das "Präfix": "" in meiner '.angular-cli.json' gesetzt habe. Könnte es daran liegen, dass der Wechsel von 'angle-cli.json' zu '.angular-cli.json' die Ursache ist?
angular
angular-cli
Thomas Wang
quelle
quelle
Antworten:
Das Problem (wie im Typenskript-Fehler TS2304 beschrieben: Name 'require' kann nicht gefunden werden ) besteht darin, dass die Typdefinitionen für den Knoten nicht installiert sind.
Bei einem projizierten Genned
with @angular/cli 1.x
sollten die spezifischen Schritte sein:Schritt 1 :
Installieren Sie
@types/node
mit einer der folgenden Optionen :Schritt 2 : Bearbeiten Sie Ihre Datei src / tsconfig.app.json und fügen Sie anstelle der leeren Datei
"types": []
, die bereits vorhanden sein sollte, Folgendes hinzu :Wenn ich etwas verpasst habe, schreibe einen Kommentar und ich werde meine Antwort bearbeiten.
quelle
tsconfig.app.json
untersrc
Ordner hinzufügen ändern"types": ["node"]
, es ist nicht in der root tsconfigdeclare var require: any;
half überraschend.Endlich habe ich eine Lösung dafür, überprüfe meine App-Moduldatei:
Beachten Sie
declare var require: any;
im obigen Code.quelle
Funktioniert in Angular 7+
Ich hatte das gleiche Problem, fügte ich hinzu
zu tsconfig.json des Stammordners.
Es gab noch eine tsconfig.app.json unter dem Ordner src und ich habe dies durch Hinzufügen gelöst
in die Datei tsconfig.app.json unter
compilerOptions
quelle
Bei Verwendung von VSCode und Angular 5 musste ich nur "Knoten" zu Typen in tsconfig.app.json hinzufügen. Speichern Sie den Server und starten Sie ihn neu .
Eine merkwürdige Sache ist, dass dieses Problem "nicht finden kann erforderlich" ("nicht auftritt, wenn mit ts-node ausgeführt wird
quelle
"types": [ "node" ],
zumtsconfig.lib.json
though.Die Antwort ist noch nicht sicher, aber eine mögliche Problemumgehung ist
quelle
Ich fügte hinzu
in meiner tsconfig- Datei und es hat bei mir funktioniert tsconfig.json Datei sieht es so aus
quelle
Fügen Sie oben in der Datei die folgende Zeile hinzu, die den Fehler ausgibt:
quelle
Ich habe das bewegt
tsconfig.json
Datei in einen neuen Ordner , um mein Projekt neu zu strukturieren.Daher konnte der Pfad zum Ordner "node_modules / @ types" nicht aufgelöst werden
typeRoots
Eigenschaft von tsconfig.json nicht aufgelöst werdenAktualisieren Sie einfach den Pfad von
zu
Um nur sicherzustellen, dass der Pfad zu node_modules vom neuen Speicherort der Datei tsconfig.json aufgelöst wird
quelle