报错内容
ValidationError: Invalid options object. Copy Plugin has been initialized using an options object that does not match the API schema.
- options[0] misses the property ‘patterns’. Should be:
[non-empty string | object { from, to?, context?, globOptions?, filter?, toType?, force?, info?, transform?, transformPath?, noErrorOnMissing? }, …] (should not have fewer than 1 item)
尝试修改
根据
https://blog.csdn.net/weixin_44306683/article/details/106355509
进行修改后仍旧报错。
解决办法
在package.json中将copy-webpack-plugin更改到低版本4.0.1
"copy-webpack-plugin": "^4.0.1"
附上vue.config.js配置文件
const CopyWebpackPlugin = require("copy-webpack-plugin");
const webpack = require("webpack");
const path = require("path");
let cesiumSource = "./node_modules/cesium/Source";
let cesiumWorkers = "../Build/Cesium/Workers";
module.exports = {
// 基本路径
publicPath: "./",
// 输出文件目录
outputDir: "dist",
// eslint-loader 是否在保存的时候检查
lintOnSave: false,
// webpack-dev-server 相关配置
devServer: {
open: process.platform === "darwin",
host: "0.0.0.0",
port: 8082,
https: false,
hotOnly: false
},
configureWebpack: {
output: {
sourcePrefix: " "
},
amd: {
toUrlUndefined: true
},
resolve: {
alias: {
vue$: "vue/dist/vue.esm.js",
"@": path.resolve("src"),
cesium: path.resolve(__dirname, cesiumSource)
}
},
plugins: [
new CopyWebpackPlugin([
{ from: path.join(cesiumSource, cesiumWorkers), to: "Workers" }
]),
new CopyWebpackPlugin([
{ from: path.join(cesiumSource, "Assets"), to: "Assets" }
]),
new CopyWebpackPlugin([
{ from: path.join(cesiumSource, "Widgets"), to: "Widgets" }
]),
new CopyWebpackPlugin([
{
from: path.join(cesiumSource, "ThirdParty/Workers"),
to: "ThirdParty/Workers"
}
]),
new webpack.DefinePlugin({
CESIUM_BASE_URL: JSON.stringify("./")
})
],
module: {
//解决Critical dependency: require function is
// used in a way in which dependencies cannot be statically extracted的问题
unknownContextCritical: false
}
}
};