Je souhaite utiliser Chart.js dans mon projet Angular. Dans les versions précédentes d'Angular2, j'ai bien fait cela en utilisant un 'chart.loader.ts' qui a:
export const { Chart } = require('chart.js');
Ensuite, dans le code du composant, je viens de
import { Chart } from './chart.loader';
Mais après la mise à niveau vers cli 1.0.0 et Angular 4, j'obtiens l'erreur: "Impossible de trouver le nom 'require'".
Pour reproduire l'erreur:
ng new newapp
cd newapp
npm install chart.js --save
echo "export const { Chart } = require('chart.js');" >> src/app/chart.loader.ts
ng serve
Dans mon 'tsconfig.json', j'ai
"typeRoots": [
"node_modules/@types"
],
Et dans 'node_modules/@types/node/index.d.ts' il y a:
declare var require: NodeRequire;
Donc je suis confus.
BTW, je rencontre constamment l'avertissement:
[tslint] The selector of the component "OverviewComponent" should have prefix "app"(component-selector)
Bien que j'aie défini le "préfixe": "" dans mon '.angular-cli.json'. Serait-ce parce que changer de «angular-cli.json» à «.angular-cli.json» la cause?
angular
angular-cli
Thomas Wang
la source
la source
Réponses:
Le problème (comme indiqué dans l'erreur de type TS2304: impossible de trouver le nom 'require' ) est que les définitions de type pour le nœud ne sont pas installées.
Avec un projet défini
with @angular/cli 1.x
, les étapes spécifiques devraient être:Étape 1 :
Installez
@types/node
avec l'un des éléments suivants:Étape 2 : Modifiez votre fichier src / tsconfig.app.json et ajoutez ce qui suit à la place du vide
"types": []
, qui devrait déjà être là:Si j'ai manqué quelque chose, notez un commentaire et je modifierai ma réponse.
la source
tsconfig.app.json
sous lesrc
dossier en ajoutant"types": ["node"]
, ce n'est pas dans la racine tsconfigdeclare var require: any;
aidé de manière surprenante.Enfin, j'ai une solution pour cela, vérifiez mon fichier de module d'application:
Avis
declare var require: any;
dans le code ci-dessus.la source
Fonctionnera dans Angular 7+
J'étais confronté au même problème, j'ajoutais
à tsconfig.json du dossier racine.
Il y avait encore un tsconfig.app.json dans le dossier src et j'ai résolu ce problème en ajoutant
dans le fichier tsconfig.app.json sous
compilerOptions
la source
Quant à moi, en utilisant VSCode et Angular 5, je n'avais qu'à ajouter "node" aux types dans tsconfig.app.json. Enregistrez et redémarrez le serveur.
Une chose curieuse, c'est que ce problème "ne peut pas trouver require (", ne se produit pas lors de l'exécution avec ts-node
la source
"types": [ "node" ],
letsconfig.lib.json
cependant.Toujours pas sûr de la réponse, mais une solution de contournement possible est
la source
J'ai ajouté
dans mon fichier tsconfig et cela a fonctionné pour moi le fichier tsconfig.json ressemble à
la source
Ajoutez la ligne suivante en haut du fichier qui donne l'erreur:
la source
J'ai déplacé le
tsconfig.json
fichier dans un nouveau dossier pour restructurer mon projet.Il n'a donc pas pu résoudre le chemin du dossier node_modules / @ types dans la
typeRoots
propriété de tsconfig.jsonAlors mettez simplement à jour le chemin depuis
à
Pour simplement vous assurer que le chemin vers node_modules est résolu à partir du nouvel emplacement du tsconfig.json
la source