私は非常に基本的なプロジェクトをReact、TypeScript、Webpackで組み立てようとしています。コンパイルすると、node_modules
のreact
フォルダーから次のエラーが表示されます(簡潔にするために、スタックトレースとプロジェクトのパスを削除しました)。
ERROR in ./node_modules/react/cjs/react.production.min.js
Module not found: Error: Can't resolve 'fbjs/lib/emptyFunction' in '.../node_modules/react/cjs'
ERROR in ./node_modules/react/cjs/react.development.js
Module not found: Error: Can't resolve 'fbjs/lib/emptyFunction' in '.../node_modules/react/cjs'
ERROR in ./node_modules/react/cjs/react.production.min.js
Module not found: Error: Can't resolve 'fbjs/lib/emptyObject' in '.../node_modules/react/cjs'
ERROR in ./node_modules/react/cjs/react.development.js
Module not found: Error: Can't resolve 'fbjs/lib/emptyObject' in '.../node_modules/react/cjs'
ERROR in ./node_modules/react/cjs/react.development.js
Module not found: Error: Can't resolve 'fbjs/lib/invariant' in '.../node_modules/react/cjs'
ERROR in ./node_modules/react/cjs/react.development.js
Module not found: Error: Can't resolve 'fbjs/lib/warning' in '.../node_modules/react/cjs'
ERROR in ./node_modules/react/cjs/react.production.min.js
Module not found: Error: Can't resolve 'object-assign' in '.../node_modules/react/cjs'
ERROR in ./node_modules/react/cjs/react.development.js
Module not found: Error: Can't resolve 'object-assign' in '.../node_modules/react/cjs'
ERROR in ./node_modules/react/cjs/react.development.js
Module not found: Error: Can't resolve 'prop-types/checkPropTypes' in '.../node_modules/react/cjs'
TypeScriptをアンインストールしてBabelに置き換えてJSXをトランスパイルしようとすると、同じエラーが発生しました。 babel-preset-2015
をインストールすると修正されます。
TypeScriptで同じ結果を得るために、target
とmodule
のほぼすべての組み合わせをtsconfig.json
で試しましたが、何も機能しませんでした。 Webpack、TypeScript、およびReact連携して動作するようにするにはどうすればよいですか?
これらの3つのテクノロジーすべてを以前に使用したことがありますが、最近の互換性の問題ですか?もしそうなら、最新の互換バージョンは何ですか?
ソリューションがプロジェクトにfbjs
を直接インストールするこの問題に似た他のいくつかの質問を見ました-私もこれを試してみましたが、成功しませんでした。
{
"compilerOptions": {
"target": "es5",
"jsx": "react",
"module": "es2015"
},
"exclude": ["build"]
}
module.exports = {
entry: {
dev: "./src/index.tsx",
},
output: {
filename: "./build/index.js",
},
devtool: "source-map",
resolve: {
extensions: [".ts", ".tsx"],
},
module: {
loaders: [
// TypeScript
{ test: /\.tsx?$/, loader: "ts-loader" },
],
},
};
{
...
"scripts": {
"build": "webpack"
},
"devDependencies": {
"@types/react": "^16.0.28",
"ts-loader": "^3.2.0",
"TypeScript": "^2.6.2",
"webpack": "^3.10.0"
},
"dependencies": {
"react": "^16.2.0"
}
}
import * as React from "react";
const a = <div />;
(Node 9.2.1およびNPM 5.6.0がインストールされている状態でこれを実行しています)
Webpackが.js
ファイルを解決していません。これをwebpack.config.js
に追加してください。
resolve: {
extensions: [".ts", ".tsx", ".js", ".jsx"]
},
これが、サンプルを実行するために使用したtsconfig.json
です。
{
"compilerOptions": {
"jsx": "react",
"lib": ["es6", "dom"],
"rootDir": "src",
"module": "commonjs",
"target": "es5",
"sourceMap": true,
"moduleResolution": "node",
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true
},
"include": [
"./src"
],
"exclude": [
"node_modules",
"build"
]
}