webpack - Webpack 已使用与 API 架构不匹配的配置对象进行初始化
问题描述
在我将 webpack 更新到最新版本后,我开始在编译阶段收到以下错误:
✖ 「wds」:无效的配置对象。Webpack 已使用与 API 模式不匹配的配置对象进行初始化。- configuration.devtool 应该匹配模式“^(inline-|hidden-|eval-)?(nosources-)?(cheap-(module-)?)?source-map$”。自 webpack 5 以来的重大变化:devtool 选项更加严格。请严格按照模式中关键字的顺序。npm 错误!代码 ELIFECYCLE npm 错误!errno 1 npm 错误!webpack-basic-setting@3.0.0 开发人员:webpack-dev-server --open --config config/webpack.dev.conf.js
npm 错误!退出状态 1 npm ERR!npm 错误!在 webpack-basic-setting@3.0.0 开发脚本中失败。npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2021-07-28T09_00_27_811Z-debug.log`enter code here`
调试日志文件:
0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/local/bin/npm', 'run', 'dev' ]
2 info using npm@6.14.4
3 info using node@v10.20.1
4 verbose run-script [ 'predev', 'dev', 'postdev' ]
5 info lifecycle webpack-basic-setting@3.0.0~predev: webpack-basic-setting@3.0.0
6 info lifecycle webpack-basic-setting@3.0.0~dev: webpack-basic-setting@3.0.0
7 verbose lifecycle webpack-basic-setting@3.0.0~dev: unsafe-perm in lifecycle true
8 verbose lifecycle webpack-basic-setting@3.0.0~dev: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/root/webpack-basic-setting/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9 verbose lifecycle webpack-basic-setting@3.0.0~dev: CWD: /root/webpack-basic-setting
10 silly lifecycle webpack-basic-setting@3.0.0~dev: Args: [ '-c',
10 silly lifecycle 'webpack-dev-server --open --config config/webpack.dev.conf.js' ]
11 silly lifecycle webpack-basic-setting@3.0.0~dev: Returned: code: 1 signal: null
12 info lifecycle webpack-basic-setting@3.0.0~dev: Failed to exec dev script
13 verbose stack Error: webpack-basic-setting@3.0.0 dev: `webpack-dev-server --open --config config/webpack.dev.conf.js`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:198:13)
13 verbose stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:198:13)
13 verbose stack at maybeClose (internal/child_process.js:982:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
14 verbose pkgid webpack-basic-setting@3.0.0
15 verbose cwd /root/webpack-basic-setting
16 verbose Linux 5.6.0-kali2-amd64
17 verbose argv "/usr/bin/node" "/usr/local/bin/npm" "run" "dev"
18 verbose node v10.20.1
19 verbose npm v6.14.4
20 error code ELIFECYCLE
21 error errno 1
22 error webpack-basic-setting@3.0.0 dev: `webpack-dev-server --open --config config/webpack.dev.conf.js`
22 error Exit status 1
23 error Failed at the webpack-basic-setting@3.0.0 dev script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
webpack.base.conf.js:
/* Base config: */
const path = require('path');
const fs = require("fs");
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const PATHS = {
src: path.join(__dirname, '../src'),
dist: path.join(__dirname, '../build'),
assets: 'static/',
root: './'
}
const PAGES_DIR = `${PATHS.src}/pug/pages/`;
const PAGES = fs
.readdirSync(PAGES_DIR)
.filter(fileName => fileName.endsWith('.pug'));
module.exports = {
externals: {
paths: PATHS
},
entry: {
app: PATHS.src,
// module: `${PATHS.src}/your-module.js`,
},
output: {
filename: `${PATHS.assets}js/[name].[contenthash].js`,
path: PATHS.dist,
publicPath: '/'
},
optimization: {
splitChunks: {
cacheGroups: {
vendor: {
name: "vendors",
test: /node_modules/,
chunks: "all",
enforce: true
}
}
}
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: '/node_modules/'
},
{
test: /\.pug$/,
loader: 'pug-loader',
options: {
pretty: true
}
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]'
}
},
{
test: /\.(woff2?|ttf|eot|svg|)(\?v=\d+\.\d+)?$/,
loader: "file-loader",
options: {
name: "[name].[ext]"
}
},
{
test: /\.scss$/,
use: [
'style-loader',
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: { sourceMap: true }
},
{
loader: 'postcss-loader',
options: {
sourceMap: true,
config: {
path: `./config/postcss.config.js`
}
}
},
{
loader: 'sass-loader',
options: { sourceMap: true }
}
]
},
{
test: /\.css$/,
use: [
'style-loader',
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: { sourceMap: true }
}, {
loader: 'postcss-loader',
options: {
sourceMap: true,
config: {
path: `./config/postcss.config.js`
}
}
}
]
}
]
},
resolve: {
alias: {
'~': 'src'
}
},
plugins: [
new MiniCssExtractPlugin({
filename: `${PATHS.assets}css/[name].[hash].css`,
}),
/*
If using html
new HtmlWebpackPlugin({
template: `${PATHS.root}index.html`,
filename: './index.html',
inject: true
}),*/
new CopyWebpackPlugin([
{ patterns: [{ from: `${PATHS.src}/assets/img`, to: `${PATHS.assets}img` }] },
{ patterns: [{ from: `${PATHS.src}/assets/fonts`, to: `${PATHS.assets}fonts` }] }
]),
...PAGES.map(page => new HtmlWebpackPlugin({
template: `${PAGES_DIR}/${page}`,
filename: `./${page.replace(/\.pug/,'.html')}`
}))
],
}
webpack.dev.conf.js:
const webpack = require('webpack');
const merge = require('webpack-merge');
const baseWebpackConfig = require('./webpack.base.conf');
const devWebpackConfig = merge(baseWebpackConfig, {
mode: 'development',
devtool: 'cheap-module-eval-source-map',
devServer: {
contentBase: baseWebpackConfig.externals.paths.dist,
port: 80,
overlay: {
warnings: true,
errors: true
}
},
plugins: [
new webpack.SourceMapDevToolPlugin({
filename: '[file].map'
})
]
});
module.exports = new Promise((resolve) => {
resolve(devWebpackConfig)
});
解决方案
推荐阅读
- c++ - 如何解决外部线程中的“错误 C2712:无法在需要对象展开的函数中使用 __try”?
- xamarin - Xamarin iOS 崩溃
- javascript - Angular 9 无法发出发布请求
- excel - Google表格/ Excel根据单元格值获取命名范围名称,其中多行用于相关下拉列表
- android - 向消费者分发一个 android 库(aar):但源代码在 GitHub 私有仓库中
- google-chrome - Vue.js 中 Chrome 和 Datalist 的性能问题
- ios - 将 NSAttributedString(字体/颜色)插入 UITextField 的 IBaction
- javascript - 如何通过php检查PayPal中的订阅ID是否有效
- javascript - 在脚本标签中使函数不是全局的
- assembly - 我不能在气体装配中使用 MOVABS?