ChatGPT解决这个技术问题 Extra ChatGPT

升级到 Angular4 后找不到名称“require”

我想在我的 Angular 项目中使用 Chart.js。在以前的 Angular2 版本中,我通过使用具有以下功能的“chart.loader.ts”一直做得很好:

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)

虽然我在'.angular-cli.json'中设置了“前缀”:“”。难道是因为从 'angular-cli.json' 更改为 '.angular-cli.json' 的原因?

问题出在您的 tsconfig.json 文件中。在此处查看解决方案:stackoverflow.com/questions/31173738/…
@IndyWill 谢谢,实际上它应该在 src/tsconfig.app.json 中。你能写这个作为答案吗?
对于电子 + 角度 2/4,请参阅:stackoverflow.com/a/47364843/5248229

S
Sunil Garg

问题(如 typescript getting error TS2304: cannot find name ' require' 中所述)是未安装节点的类型定义。

对于预计生成的 with @angular/cli 1.x,具体步骤应为:

步骤1:

使用以下任一方式安装 @types/node

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

第 2 步:编辑您的 src/tsconfig.app.json 文件并添加以下内容来代替应该已经存在的空 "types": []

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

如果我错过了什么,请写下评论,我会编辑我的答案。


好吧对我没用...我必须安装其他东西吗?
对我来说也行不通。此处的详细信息:stackoverflow.com/questions/44421367/types-not-found
注意:您必须更改 src 文件夹下的 tsconfig.app.json 添加 "types": ["node"],它不在根 tsconfig
也没有为我工作。另一个建议只是添加 declare var require: any; 的答案令人惊讶。
我错过了第 2 步。谢谢!
R
Rahmat Ali

将在 Angular 7+ 中工作

我面临同样的问题,我正在添加

"types": ["node"]

到根文件夹的 tsconfig.json。

src 文件夹下还有一个 tsconfig.app.json ,我通过添加解决了这个问题

"types": ["node"]

compilerOptions 下的 tsconfig.app.json 文件

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "types": ["node"]  ----------------------< added node to the array
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts"
  ]
}

简单易行,解决了我的问题 angular 12
P
Paritosh

最后我得到了解决方案,检查我的 App 模块文件:

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;


我在 polyfills.ts 文件中遇到了这个问题,但是你的“declare var require: any;”解决它。谢谢
T
Thomas Wang

仍然不确定答案,但可能的解决方法是

import * as Chart from 'chart.js';

V
Val Martinez

至于我,使用 VSCode 和 Angular 5,只需将“节点”添加到 tsconfig.app.json 中的类型。保存并重新启动服务器。

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

一件奇怪的事情是,这个问题“找不到 require (”,在使用 ts-node 执行时不会发生


对我来说,在 Angular 6 中工作就像一个魅力。
这个解决方案在 Angular 6 库中对我有用。我需要将 "types": [ "node" ], 添加到 tsconfig.lib.json
并重新启动服务器。我的天,一直都是这样。在 Angular 9 上工作。👍
S
Sunil Garg

我添加了

"types": [ 
   "node"
]

在我的 tsconfig 文件中,它为我工作的 tsconfig.json 文件看起来像

  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "baseUrl": "./",
    "module": "es2015",
    "types": [ 
      "node",
      "underscore"
    ]
  },  

虽然此代码可能会回答问题,但您仍然可以考虑添加一些解释性句子,因为这会增加您的答案对其他用户的价值。
V
Vardan Nadkarni

在给出错误的文件顶部添加以下行:

declare var require: any

M
Mahesh

我将 tsconfig.json 文件移动到一个新文件夹中以重组我的项目。

所以它无法解析 tsconfig.json 的 typeRoots 属性内的 node_modules/@types 文件夹的路径

所以只需更新路径

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

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

仅确保从 tsconfig.json 的新位置解析 node_modules 的路径


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅