web-dev-qa-db-ja.com

TypeScript / Reactアプリで「ノード」のタイプ定義ファイルが見つかりません

少し前に気づきましたが、アプリを起動しようとすると、たくさんのCannot find name 'require'Cannot find type definition file for 'node'Cannot find type definition for 'react-router'が表示されます

私がすでに試したいくつかの解決策は次のとおりです:

1)下記のように、私のtsconfig.jsonにtypes: ["node"]を追加します。

2)@types/nodeを私のpackage.jsonに追加します。

3)node_modulesを削除し、yarningを再利用します。また、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"]を追加すると、Cannot find type definition file for 'react-router'は消去されますが、nodeは消去されないことです。 react-routerを追加すると、nodereact-routerの両方にエラーが発生し、types属性を完全に削除すると、nodereact-routerの両方にエラーが発生します。

declare var require: anyをソリューションとして使用することは控えたいと思います。これは問題の核心とパッチの詳細を解決するものではないためです。

さらに役立つ情報がいくつかあります。ノードのバージョンは11.6.0で、糸のバージョンは1.13.0です。

これを機能させるための他の提案はありますか?上記で試した解決策以外に、他の解決策を見つけることができないようです。必要な場合は、さらに情報を提供することもできます。皆さんありがとう!

3
john.zli

試す

npm install @types/node --save-dev

tsconfigファイルに追加:-

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

}

6
AConsumer

私はこれをなんとか修正しました。

私は非常に古いwebpackバージョン管理を使用していました。 webpack 4、ts-loaderをv5にアップグレードし、他のwebpackプラグインをアップグレードした後、このコンパイルの問題を修正することができました。

それがwebpackである可能性があることを私に知らせた1つのことは、VSCodeがノードのタイピングを完全に正常に確認できたにもかかわらず、古いwebpackのコンパイルでこれらのエラーが表示されることでした。

3
john.zli