Я пытаюсь собрать очень простой проект с помощью React, TypeScript и Webpack. Когда я компилирую, я получаю следующие ошибки из react
папки в node_modules
(я сократил трассировку стека и мой путь к проекту для краткости):
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
исправлена .
Я пробовал примерно любую комбинацию target
и module
в tsconfig.json
, чтобы получить тот же результат в TypeScript, но не смог получить ничего работающего. Как я могу получить Webpack, TypeScript и React работать вместе?
Я работал со всеми тремя этими технологиями раньше, это недавняя проблема совместимости? Если да, то какие самые последние совместимые версии?
Я видел несколько других вопросов, подобных этому, где решение устанавливало fbjs
непосредственно в проекте - я тоже пробовал это без успеха.
Файлы
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"jsx": "react",
"module": "es2015"
},
"exclude": ["build"]
}
webpack.config.js
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" },
],
},
};
package.json
{
...
"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"
}
}
./ЦСИ/index.tsx
import * as React from "react";
const a = <div />;
(Я запускаю это с Node 9.2.1 и NPM 5.6.0)