Soru Angular4'e geçtikten sonra 'require' adı bulunamıyor


Ben Chart.js'yi Açısal projemde kullanmak istiyorum. Önceki Angular2 sürümlerinde, aşağıdakileri içeren bir 'chart.loader.ts' kullanarak bunu çok iyi yapıyorum:

export const { Chart } = require('chart.js');

Sonra bileşen kodunda sadece

import { Chart } from './chart.loader';

Ancak, 1.0.0 ve Angular 4'e yükseltildikten sonra, şu hatayı alıyorum: "İsim 'gerektiriyor'".

Hatayı yeniden üretmek için:

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' yazımda

"typeRoots": [
  "node_modules/@types"
],

Ve 'node_modules/@types/node/index.d.ts' içinde:

declare var require: NodeRequire;

Yani kafam karıştı.

BTW, sürekli uyarıyla karşılaşıyorum:

[tslint] The selector of the component "OverviewComponent" should have prefix "app"(component-selector)

".Angular-cli.json" da "önek": "" ayarlamış olmama rağmen. Bunun nedeni 'angular-cli.json' dan '.angular-cli.json' 'a geçme sebebi olabilir mi?


76
2018-03-29 21:02


Menşei


Sorun, tsconfig.json dosyasında. Çözüme bakın: stackoverflow.com/questions/31173738/... - IndyWill
@IndyWill Teşekkürler, aslında src / tsconfig.app.json olmalıdır. Bunu bir cevap olarak yazabilir misin? - Thomas Wang
Elektron + açısal 2/4 için bkz: stackoverflow.com/a/47364843/5248229 - mihaa123


Cevaplar:


Sorun (belirtildiği gibi hata alıyorum TS2304: 'require' adını bulamıyor) düğüm için tip tanımlarının yüklü olmamasıdır.

Yansıtılan bir @ açısal / uçlu 1.x ile spesifik adımlar şöyle olmalıdır:

Aşama 1: @ türlerini / düğümlerini aşağıdakilerden birini kullanarak yükleyin:

- npm install --save @types/node
- yarn add @types/node

Adım 2:     - src / tsconfig.app.json dosyanızı düzenleyin ve boş yerine aşağıdakileri ekleyin. "types": []zaten orada olması gereken:

...
"types": [ "node" ],
"typeRoots": [ "../node_modules/@types" ]
...

Bir şeyi özlediysem, bir yorum yaz ve cevabımı düzenlerim.


136
2018-03-30 23:08



Benim için işe yaramadı ... başka bir şey yüklemem gerekiyor mu?
Ayrıca benim için işe yaramıyor. Burada detaylar: stackoverflow.com/questions/44421367/types-not-found - user3471528
Not: Değiştirmelisiniz tsconfig.app.json altında src klasör ekleniyor "types": ["node"]Bu kök tsconfig değil - BrunoLM
açısal 4 için benim için çalıştı - Chaudhry Waqas
Benim için de çalışmadı. sadece eklemek için öneren başka bir cevap declare var require: any; şaşırtıcı bir şekilde yardımcı oldu. - Paritosh


Yine de cevaptan emin değilsiniz, ancak olası bir çözüm

import * as Chart from 'chart.js';

12
2018-03-30 15:59





Sonunda bunun için bir çözüm buldum, App modül dosyamı kontrol et:

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 { }

ihbar declare var require: any; Yukarıdaki kodda.


10
2018-05-18 11:07



Polyfills.ts dosyasında bu sorunu yaşadım, ancak "declare var required: any;" onu düzeltti. Teşekkürler - Andre


Bana gelince, VSCode ve Angular 5 kullanarak, sadece tsconfig.app.json içinde "node" eklemek zorunda kaldı. Kaydet ve yeniden başlat sunucu.

{
    "compilerOptions": {
    ..
    "types": [
      "node"
    ]
  }
  ..
}

Meraklı bir şey, bu problemin "bulamadığı" (ts-node ile kesişirken olmaz)


4
2018-04-06 16:11





Taşındım tsconfig.json projemi yeniden yapılandırmak için yeni bir klasöre dosya.

Bu yüzden node_modules / @ types klasörüne giden yolu çözemedi. typeRoots tsconfig.json özelliği

Sadece yolunu güncelleyin

"typeRoots": [
  "../node_modules/@types"
]

için

"typeRoots": [
  "../../node_modules/@types"
]

Node_modules yolunun tsconfig.json'un yeni konumundan çözüldüğünden emin olmak için


1
2018-01-23 22:46





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"
    ]
  },  


1
2018-05-22 11:05



Bu kod soruyu cevaplayabilirken, diğer kullanıcılara verdiğiniz cevabın değerini artırdığından, birkaç açıklayıcı cümle eklemeyi düşünebilirsiniz. - blue-phoenox