【问题标题】:Webpack - npm run start and build doesn't work?Webpack - npm run start 和 build 不起作用?
【发布时间】:2020-10-26 20:57:27
【问题描述】:

我习惯于使用 create-react-app 创建 React 项目,但我决定不使用它创建一个,但我被困在 webpack 配置中,因为我是新手它:

这是我的 package.json 文件:

{
  "name": "package.json",
  "version": "1.0.0",
  "description": "Demo",
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server --mode development --open --hot",
    "build": "webpack --mode production"
  },
  "author": "",
  "license": "MIT",
  "dependencies": {
    "@babel/core": "^7.12.3",
    "@babel/preset-env": "^7.12.1",
    "@babel/preset-react": "^7.12.1",
    "babel-loader": "^8.1.0",
    "css-loader": "^5.0.0",
    "html-webpack-plugin": "^4.5.0",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "server": "^1.0.30",
    "style-loader": "^2.0.0",
    "webpack": "^5.2.0",
    "webpack-cli": "^4.1.0",
    "webpack-dev-server": "^3.11.0"
  }
}

webpack.config.js 文件:

const path = require('path');
const HTMLplugin = require('html-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');


const rules = [
    {
        test: /\.js$/,
        exclude: /node-modules/,
        use: {
            loader: 'babel-loader'
        }
    },
    {
        test: /\.css$/,
        exclude: /node-modules/,
        use: ['style-loader', 'css-loader']
    }
]

module.exports = {
    entry: path.join(__dirname, 'src', index.js),
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, '/build')
    },
    module: {rules},
    plugins: [
        new HtmlWebpackPlugin({template: './public/index.html'})
    ]
}

.babelrc.json 文件:

{
    "presets": ["@babel/preset-env","@babel/preset-react"]
}

这是我的整个项目文件夹和文件树:

当我运行npm run startnpm run build 时,它失败了:

使用npm run start,我收到此错误:

internal/modules/cjs/loader.js:968
  throw err;
  ^

Error: Cannot find module 'webpack-cli/bin/config-yargs'
Require stack:
- C:\Users\saher\Desktop\New folder\node_modules\webpack-dev-server\bin\webpack-dev-server.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:965:15)
    at Function.Module._load (internal/modules/cjs/loader.js:841:27)
    at Module.require (internal/modules/cjs/loader.js:1025:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (C:\Users\saher\Desktop\New folder\node_modules\webpack-dev-server\bin\webpack-dev-server.js:65:1)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) {
  code: 'MODULE_NOT_FOUND',

npm run build:

[webpack-cli] ReferenceError: index is not defined

我是 webpack 的新手,我不知道问题出在哪里,我想我已经安装了使它工作所需的所有文件和配置,那么问题到底出在哪里??

【问题讨论】:

  • 你跑npm install了吗?
  • @JoshBonnick 是的!
  • 另外,从终端发出该命令时,请确保您位于项目文件夹中。您可以考虑使用 nom 插件,您只需单击脚本即可运行。
  • @RandyCasburn 我在正确的目录中

标签: javascript reactjs npm webpack


【解决方案1】:

我认为问题是,你写的索引没有字符串引号。

entry: path.join(__dirname, 'src', index.js)

这应该是

entry: path.join(__dirname, 'src', 'index.js')

当你写的时候没有字符串引号时,它就像一个变量。您可以在 console.log 上尝试相同的操作。

因为没有定义索引。

【讨论】:

  • 谢谢你这解决了一半的问题,现在npm run build 工作但npm run start 产生同样的错误
【解决方案2】:

有一个打开的错误报告指出 webpack-server 3.11 与 webpack-cli v4 不兼容。

报告可以在这里找到:Issue 2759

是的 - webpack-dev-server 不适用于 webpack-cli v4

评论链接:https://github.com/webpack/webpack-dev-server/issues/2759#issuecomment-706668920

解决方案是通过更改为兼容版本来修改您的 project.json 文件(欢迎使用 Webpack :-))

【讨论】:

  • 谢谢,现在我可以只使用webpack serve 来运行服务器,而无需使用兼容版本
【解决方案3】:

package.json 中的"main": "index.js" 应该是"main" : "src/index.js"

【讨论】:

  • 它似乎失败了,因为它找不到它的入口点
猜你喜欢
  • 2021-02-01
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 2017-10-05
  • 2017-01-18
  • 2018-12-23
  • 2021-03-26
相关资源
最近更新 更多