在Angular 7(typescript 3.1.3)中找不到名称为'require'的内容。

33

我的问题是为什么会显示这个错误?

src/app/p2p/p2p.component.ts(14,16)中出现错误:error TS2580: 找不到名称“require”。你需要安装node的类型定义吗?尝试使用npm i @types/node

我已经安装了。

 @types/node
in app/tsconfig.app.json have add 
"types": [
    "node" 
  ],
  "typeRoots": [ 
  "../node_modules/@types"
 ]  

但是出现了错误,找不到'require'


1
展示你的p2p.component.ts。 - omurbek
声明变量require: any;导出类P2pComponent实现OnInit接口{ constructor() { var Peer = require(peer) var p = new Peer({ initiator: location.hash === '#1', trickle: false }) p.on('signal', function (data) { console.log('SIGNAL', JSON.stringify(data)) document.querySelector('#outgoing').textContent = JSON.stringify(data) }) document.querySelector('form').addEventListener('submit', function (ev) { ev.preventDefault()}) p.on('connect', function () { console.log('CONNECT') p.send('whatever' + Math.random()) }) }} - ikhwan rozali
6个回答

44

即使我将其添加到tsconfig.json中,问题仍然存在,但是将以下行添加到tsconfig.app.json后,问题得到了解决:

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

一定要将此内容添加到./tsconfig.json./src/tsconfig.app.json两个文件中,这样它才能正常工作。


2
对我来说,当我把它添加到tsconfig.app.json时,它起作用了!非常感谢! - Felipe Belluco
5
我发现我可以将tsconfig.app.json中的 "types" 属性添加 "node" 而无需在 tsconfig.json 中也包含它,这样项目就能够编译成功。 - Evan
4
胜利者!问题在于默认的tsconfig.app.json文件中types属性是空的,这会覆盖tsconfig.json文件中的types属性。我花了一段时间才弄清楚这个问题。 - Dave Nottage
这适用于React或任何TypeScript项目。 - Corné
1
@DaveNottage 的输入帮助了我,从 tsconfig.app.json 中删除空类型,并在 tsconfig.json 中添加 types=["node"],这为我解决了问题。 - RDV

31
src/tsconfig.app.json 文件中加入以下设置。
{
  "compilerOptions": {
    "types": ["node"]
  }
}

21

类型“node”缺失

安装 @types/node:

npm install --save @types/node
或者。
yarn add @types/node

编辑你的 src/tsconfig.json 文件,添加如下内容:


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

4

和其他人一样,我也将节点添加到tsconfig中的“types”数组中,但出于某种原因,它没有起作用。我知道这是一种hack,以下是我如何解决它:

在'require'语句之前的任何位置添加此行:declare const require: any;

这不是一个真正的解决方法,但我现在没有时间去解决这种类型的问题。我会回来处理它(或者可能不会,但也可以)。


2

请检查tsconfig.json文件。您需要在该文件中添加相同的设置。


1

这是因为TypeScript不了解require关键字,所以需要添加一行代码使TypeScript了解require关键字。

一旦编译为JavaScript,它就更好地知道了require关键字并完成了工作。

declare var require: any;

const pokemon = require('src/assets/pokedex.json');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接