在TypeScript/React应用中找不到“node”类型定义文件。

35 浏览
0 Comments

在TypeScript/React应用中找不到“node”类型定义文件。

这个问题已经有了答案

TypeScript获取错误TS2304:找不到名称\' require \'

我注意到不久前,每当我尝试启动我的应用程序时,我会收到大量的找不到名称\'require\'找不到\'type\'文件定义文件\'以及找不到 \'react-router\'的类型定义

我已经尝试过的一些解决方案:

1) 在我的tsconfig.json中添加types:[\"node\"],如下所示。

2) 在我的package.json中添加@types / node,如此处所示。

3) 删除node_modules和re yarn,但无济于事。我也删除了yarn.lock,问题仍然存在。

4) 添加typeRoots:[\"node_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'.

我注意到的一些奇怪行为是,添加types:[\"node\"]会删除我的找不到 \'react-router\'的类型定义文件,但不适用于node。添加react-router会针对nodereact-router产生错误,删除types属性也会针对nodereact-router产生错误。

我希望避免使用declare var require:any作为解决方案,因为这并没有解决问题的核心,而只是一个补丁。

如果有用的话,这里有一些更多的信息:节点版本是11.6.0,yarn版本是1.13.0

还有其他建议吗?除了我尝试过的这些方法,我似乎找不到其他的解决方案。如果需要的话,我也可以提供更多信息。谢谢大家!

admin 更改状态以发布 2023年5月21日
0
0 Comments

我设法解决了这个问题;

我使用的webpack版本太旧了; 升级到webpack 4,ts-loader v5,升级其他webpack插件后,我能够解决这个编译问题。

一个让我怀疑可能是webpack的事情是,VSCode能够完美地查看node typings,然而旧的webpack编译仍然显示这些错误。

0
0 Comments

运行

npm install @types/node --save-dev

并在tsconfig文件中添加:-

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

0