【发布时间】:2023-03-10 23:05:01
【问题描述】:
问题是我的 webpack 配置使用 CommonJS 语法,但主要代码是用 ES6 编写的。但是根据我在网上看到的教程,这似乎是典型的设置。因此,虽然错误很明显,但我无法确定为什么这对我不起作用?我更喜欢将 CommonJS 用于 webpack,因为这是文档使用的。但我想使用 ES6 编写代码。
我的配置如下。 包.json
{
"name": "my-project",
"version": "1.22.11",
"type": "module",
"dependencies": {
"html-webpack-plugin": "^5.3.2",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-router-dom": "^5.2.0"
},
"scripts": {
"build": "webpack --config webpack/webpack.config.dev.js",
"test": "jest",
"dev": "yarn build && cross-env NODE_ENV=dev node ./src/index.js"
},
"devDependencies": {
"@babel/preset-env": "^7.15.0",
"@babel/preset-react": "^7.14.5",
"babel-core": "^6.26.3",
"babel-jest": "^26.6.3",
"babel-loader": "^8.2.2",
"cross-env": "^7.0.3",
"css-loader": "^6.2.0",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.6",
"enzyme-to-json": "^3.6.1",
"jest": "^26.6.3",
"mini-css-extract-plugin": "^2.2.0",
"webpack": "^5.50.0",
"webpack-cli": "^4.7.2"
}
}
webpack 配置
const path = require("path");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
entry: "./index.js",
target: "web",
mode: "development",
output: {
filename: "bundle-web.js",
path: path.resolve(__dirname, "../dist"),
},
plugins: [new HtmlWebpackPlugin(), new MiniCssExtractPlugin()],
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: ["/node_modules/"],
use: {
loader: "babel-loader",
},
},
{
test: /\.css$/i,
use: [MiniCssExtractPlugin.loader, "css-loader"],
},
],
},
resolve: {
extensions: ["*", ".js", ".mjs"],
},
};
babelrc
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Title</title>
</head>
<body>
<div id="app"></div>
<script src=bundle-web.js"></script>
</body>
</html>
index.js(专有代码除外)。
import * as React from 'react';
import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom";
import ReactDOM from 'react-dom'; import './index.css';
节点版本:v13.14.0 操作系统:Windows 7。(是的,我知道应该更换它,但我不相信操作系统是这里的问题)。 纱线:1.22.5
正如我在 dist 文件夹中看到的那样创建了包,但是当我运行“yarn dev”时
我收到以下错误。尝试了google、github、stackoverflow的各种解决方案,都不行。
webpack --config webpack/webpack.config.dev.js
webpack-cli] Failed to load \project\webpack\webpack.config.dev.js' config
webpack-cli] ReferenceError: require is not defined
at file:///project/webpack/webpack.config.dev.js:1:14
at ModuleJob.run (internal/modules/esm/module_job.js:110:37)
at async Loader.import (internal/modules/esm/loader.js:179:24)
at async importModuleDynamicallyWrapper (internal/vm/module.js:422:15)
at async WebpackCLI.tryRequireThenImport (project\node_modules\webpack-cli\lib\webpack-cli.js:57:26)
at async loadConfig project\webpack-cli\lib\webpack-cli.js:1536:27)
at async project\webpack-cli\lib\webpack-cli.js:1589:36
at async Promise.all (index 0)
at async WebpackCLI.resolveConfig project\node_modules\webpack-cli\lib\webpack-cli.js:1587:38)
at async WebpackCLI.createCompiler project\node_modules\webpack-cli\lib\webpack-cli.js:2045:22)
【问题讨论】: