Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 找不到';的类型定义文件;节点';在Typescript/React应用程序中_Javascript_Node.js_Reactjs_Typescript_Tsconfig - Fatal编程技术网

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片段)。这看起来是一个网页问题。