当前位置: 首页 > 面试题库 >

Webpack + React + TypeScript:在…node_modules / react /中找不到模块

高自怡
2023-03-14
问题内容

我正在尝试将一个非常基础的项目与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,并moduletsconfig.json得到的打字稿同样的结果,但无法得到任何工作。
如何使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"
    }
}

./src/index.tsx

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"
  ]
}


 类似资料:
  • Webpack 5 boilerplate Webpack 5 boilerplate with support of most common loaders and modules: babel typescript (using ForkTsCheckerWebpack ) sass, less, css modules with automatic typescript declaratio

  • React Webpack Typescript Starter Minimal starter with hot module replacement (HMR) for rapid development. React (17.x) Webpack (5.x) Typescript (4.x) Hot Module Replacement (HMR) (React Hot Loader) Pr

  • 当node_module库导入索引文件时,webpack为什么不在构建中包含这些库? webpack对我来说仍然是一种黑色的艺术,我还没有完全掌握,所以下面是我试图实现的一个解释。 我正在构建一个测试应用程序,以在AWS Lambda节点服务器上作为无服务器代码运行。目标是通过在服务器上有一个或多个块并且没有node_modules文件夹,使部署包尽可能小。 我正在用TypescriptV3编写文

  • 问题内容: 尝试做时 我收到错误消息“找不到模块’socket.io/node_modules/redis”,我不知道为什么。我正在运行Windows并运行“ npminstall socket.io” 这里似乎是相同的问题:错误:找不到模块’socket.io/node_modules/redis’,但是redis服务器已启动并正在运行。 在“ socket.io/node_modules”文件

  • 问题内容: 我正在尝试使用webpack-dev-server运行一个简单的程序,但出现此错误: 我已经使用以下npm命令安装了webpack 并且我有以下配置: 我已经尝试了一切,但我真的迷路了。有人有什么主意吗? 问题答案: 是不足够的。 您还必须安装以下内容: 另外,您还可以安装:

  • 问题内容: 我想在用Typescript编写的React应用程序中将css- loader与webpack的’modules’选项一起使用。这个例子是我的起点(他们使用Babel,webpack和React)。 webpack配置 这是我想用随附的CSS文件设置样式的React组件: tree.css 说明无论我在做什么(试图改变进口语法,试图声明“要求”为TS-装载机,在这里,我总是得到: 未捕