Не удается найти имя 'require' после обновления до Angular4
Я хочу использовать диаграммы.js в рамках моего углового проекта. В предыдущих версиях Angular2 я делал это хорошо, используя 'chart.погрузчик.ц', у которого есть:
export const { Chart } = require('chart.js');
затем в коде компонента я просто
import { Chart } from './chart.loader';
но после обновления до cli 1.0.0 и Angular 4, я получаю ошибку:"не могу найти имя 'require'".
чтобы воспроизвести ошибку:
ng new newapp
cd newapp
npm install chart.js --save
echo "export const { Chart } = require('chart.js');" >> src/app/chart.loader.ts
ng serve
в моем ' tsconfig.json', у меня есть
"typeRoots": [
"node_modules/@types"
],
и в 'node_modules / @types/node / index.d. ts ' есть:
declare var require: NodeRequire;
так что я в замешательстве.
кстати, я постоянно сталкиваюсь с предупреждением:
[tslint] The selector of the component "OverviewComponent" should have prefix "app"(component-selector)
хотя я установил "префикс": "" в моем '.угловой-кли.json'. Может это потому, что меняется от ' angular-cli.json 'to'.угловой-кли.json ' причина?
6 ответов:
проблема (как описано в typescript получение ошибки TS2304: не удается найти имя 'require'), что определения типа узла, не установлены.
С запроектированным genned с @angular / cli 1.х, конкретные шаги должны быть:
Шаг 1: установите @types / node с любым из следующих параметров:
- npm install --save @types/node - yarn add @types/node
Шаг 2: - отредактировать файл src/tsconfig.приложение.JSON-файл и добавьте следующий на месте пусто
"types": []
, который уже должен быть там:... "types": [ "node" ], "typeRoots": [ "../node_modules/@types" ] ...
Если я что-то пропустил, запишите комментарий, и я отредактирую свой ответ.
наконец, я получил решение для этого, проверьте мой файл модуля приложения :
import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { HttpModule } from '@angular/http'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MaterialModule } from '@angular/material'; import 'hammerjs'; import { ChartModule } from 'angular2-highcharts'; import * as highcharts from 'highcharts'; import { HighchartsStatic } from 'angular2-highcharts/dist/HighchartsService'; import { AppRouting } from './app.routing'; import { AppComponent } from './app.component'; declare var require: any; export function highchartsFactory() { const hc = require('highcharts'); const dd = require('highcharts/modules/drilldown'); dd(hc); return hc; } @NgModule({ declarations: [ AppComponent, ], imports: [ BrowserModule, FormsModule, HttpModule, AppRouting, BrowserAnimationsModule, MaterialModule, ChartModule ], providers: [{ provide: HighchartsStatic, useFactory: highchartsFactory }], bootstrap: [AppComponent] }) export class AppModule { }
обратите внимание
declare var require: any;
в коде выше.
Что касается меня, используя VSCode и Angular 5, нужно было только добавить "узел" к типам в tsconfig.приложение.формат JSON. сохранить и перезагрузить сервер.
{ "compilerOptions": { .. "types": [ "node" ] } .. }
одна любопытная вещь, заключается в том, что эта проблема "не может найти require (" , не происходит при excuting с ts-node
I added "types": [ "node" ] in my ts.config file and its worked for me ts.config file look like "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", "baseUrl": "./", "module": "es2015", "types": [ "node", "underscore" ] },
Я переехала в
tsconfig.json
файл в новую папку для реструктуризации моего проекта.поэтому он не смог разрешить путь к папке node_modules / @types внутри
typeRoots
свойство tsconfig.jsonтак что просто обновите путь от
"typeRoots": [ "../node_modules/@types" ]
до
"typeRoots": [ "../../node_modules/@types" ]
чтобы просто убедиться, что путь к node_modules разрешен из нового местоположения tsconfig.json