Javascript 找不到';的类型定义文件;节点';在Typescript/React应用程序中
不久前,我注意到,每当我尝试启动我的应用程序时,我都会收到大量的Javascript 找不到';的类型定义文件;节点';在Typescript/React应用程序中,javascript,node.js,reactjs,typescript,tsconfig,Javascript,Node.js,Reactjs,Typescript,Tsconfig,不久前,我注意到,每当我尝试启动我的应用程序时,我都会收到大量的找不到名称“require”和找不到“node”的类型定义文件以及找不到“react router”的类型定义 我已经尝试过的一些解决方案是: 1) 在mytsconfig.json中添加类型:[“节点”],如下所示 2) 在mypackage.json中添加@types/node,大家可以在这里看到 3) 卸下节点模块并重新安装纱线,但无效。我还删除了warn.lock,问题依然存在 4) 添加一个typeroot:[“node\
找不到名称“require”
和找不到“node”的类型定义文件以及找不到“react router”的类型定义
我已经尝试过的一些解决方案是:
1) 在mytsconfig.json中添加类型:[“节点”]
,如下所示
2) 在mypackage.json中添加@types/node
,大家可以在这里看到
3) 卸下节点模块并重新安装纱线,但无效。我还删除了warn.lock,问题依然存在
4) 添加一个typeroot:[“node\u modules/@types/node”]
,这似乎没什么作用
// Package.json
"devDependencies": {
"@types/lodash": "^4.14.110",
"@types/node": "^10.12.18",
"@types/react": "16.3.12",
"@types/react-dom": "15.5.0",
"@types/react-router": "4.0.11",
"babel-core": "6.26.3",
"babel-loader": "7.1.5",
"babel-preset-es2015": "6.24.1",
"babel-preset-react": "6.24.1",
"css-loader": "1.0.0",
"extract-text-webpack-plugin": "2.0.0-beta.4",
"html-webpack-plugin": "2.24.1",
"react": "15.5.4",
"react-dom": "15.5.4",
"react-router-dom": "4.1.1",
"rimraf": "2.6.2",
"style-loader": "0.22.1",
"ts-loader": "1.2.1",
"typescript": "3.2.2",
"url-loader": "1.0.1",
"webpack": "2.2.0",
"webpack-dev-server": "1.16.2"
}
//tsconfig.json (at root level)
{
"compilerOptions": {
"baseUrl": "./",
"target": "es2016",
"pretty": true,
"module": "commonjs",
"sourceMap": true,
"jsx": "preserve",
"outDir": "./dist/",
"noImplicitAny": false,
"preserveConstEnums": true,
"strict": true,
"allowSyntheticDefaultImports": true,
"types": ["node"],
"paths": {
"*": ["node_modules/@types/*", "*"]
}
},
"include": [
"src/**/*"
],
"exclude": [
"node_modules"
]
}
上述tsconfig和package.json组合产生以下错误:
ERROR in ./src/index.tsx
(5,1): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
ERROR in /Users/johnli/Documents/portfolio/tsconfig.json
error TS2688: Cannot find type definition file for 'node'.
我注意到的一些奇怪的行为是,添加类型:[“node”]
将删除我的找不到“react router”
的类型定义文件,但对节点
则没有。添加react router
会为节点和react router
产生错误,完全删除类型属性也会为节点和react router
产生错误
我不想使用declare-var-require:any
作为解决方案,因为这并不能解决问题的核心,更像是一个补丁
更多有用信息:节点版本为11.6.0
,纱线版本为1.13.0
还有什么其他的建议可以让它工作吗?除了我在上面尝试过的方法外,我似乎找不到任何其他的解决方法。如果需要,我还可以提供更多信息。谢谢大家 运行
npm install @types/node --save-dev
并在tsconfig文件中添加:-
{
"compilerOptions": {
"types": ["node"]
}
}我设法解决了这个问题
我使用的是非常旧的网页版本控制;升级到webpack 4,ts loader升级到v5,在升级其他webpack插件之后,我能够修复这个编译问题
有一件事让我知道它可能是webpack,那就是VSCode可以很好地查看节点类型,但是旧的webpack编译仍然会显示这些错误。尝试npm install@types/node——save dev如果您没有在tsconfig.json的编译器选项中包含类型,那么tsconfig.json中就存在类型,和@types/node存在于package.json中,所以它们已经被添加了;这是一个网页解决方案;从Webpack2.0.0升级,以及所有插件碰巧为我修复了它。我有这个问题。请让我知道我需要使用什么版本的网页包和插件?谢谢。很遗憾,我就是这么做的(请参阅package.json和tsconfig片段)。这看起来是一个网页问题。