Quiero usar Chart.js dentro de mi proyecto Angular. En versiones anteriores de Angular2, lo he estado haciendo bien usando un 'chart.loader.ts' que tiene:
export const { Chart } = require('chart.js');
Luego, en el código del componente, solo
import { Chart } from './chart.loader';
Pero después de actualizar a cli 1.0.0 y Angular 4, aparece el error: "No se puede encontrar el nombre 'require'".
Para reproducir el error:
ng new newapp
cd newapp
npm install chart.js --save
echo "export const { Chart } = require('chart.js');" >> src/app/chart.loader.ts
ng serve
En mi 'tsconfig.json', tengo
"typeRoots": [
"node_modules/@types"
],
Y en 'node_modules/@types/node/index.d.ts' hay:
declare var require: NodeRequire;
Entonces estoy confundido.
Por cierto, me encuentro constantemente con la advertencia:
[tslint] The selector of the component "OverviewComponent" should have prefix "app"(component-selector)
Aunque he establecido el "prefijo": "" en mi '.angular-cli.json'. ¿Podría ser porque el cambio de 'angular-cli.json' a '.angular-cli.json' es la causa?
angular
angular-cli
Thomas Wang
fuente
fuente
Respuestas:
El problema (como se describe en el texto mecanografiado que obtiene el error TS2304: no se puede encontrar el nombre 'require' ) es que las definiciones de tipo para el nodo no están instaladas.
Con una generación proyectada
with @angular/cli 1.x
, los pasos específicos deben ser:Paso 1 :
Instale
@types/node
con cualquiera de los siguientes:Paso 2 : Edite su archivo src / tsconfig.app.json y agregue lo siguiente en lugar del vacío
"types": []
, que ya debería estar allí:Si me he perdido algo, escriba un comentario y editaré mi respuesta.
fuente
tsconfig.app.json
en lasrc
carpeta de agregar"types": ["node"]
, no está en la raíz tsconfigdeclare var require: any;
ayudó sorprendentemente.Finalmente obtuve una solución para esto, verifique el archivo del módulo de mi aplicación:
Aviso
declare var require: any;
en el código anterior.fuente
Funcionará en Angular 7+
Estaba enfrentando el mismo problema, estaba agregando
a tsconfig.json de la carpeta raíz.
Había un tsconfig.app.json más en la carpeta src y lo resolví agregando
al archivo tsconfig.app.json en
compilerOptions
fuente
En cuanto a mí, al usar VSCode y Angular 5, solo tuve que agregar "nodo" a los tipos en tsconfig.app.json. Guarde y reinicie el servidor.
Una cosa curiosa, es que este problema "no se puede encontrar require (", no ocurre al ejecutar con ts-node
fuente
"types": [ "node" ],
altsconfig.lib.json
aunque.Todavía no estoy seguro de la respuesta, pero una posible solución es
fuente
yo añadí
en mi archivo tsconfig y me funcionó el archivo tsconfig.json parece
fuente
Agregue la siguiente línea en la parte superior del archivo que da el error:
fuente
Moví el
tsconfig.json
archivo a una nueva carpeta para reestructurar mi proyecto.Por lo tanto, no pudo resolver la ruta a la carpeta node_modules / @ types dentro de la
typeRoots
propiedad de tsconfig.jsonAsí que actualiza la ruta desde
a
Para asegurarse de que la ruta a node_modules se resuelva desde la nueva ubicación del tsconfig.json
fuente