之前正常的项目,突然报 webpackJsonp is not defined
...大约 1 分钟
之前正常的项目,突然报 webpackJsonp is not defined
背景
给一个老项目加了一个功能,部署后当天是下午是正常的,第二天早上就报了 webpackJsonp is not defined,于是网上查了下原因。
网上的原因大概这么几种
- 生产的公共文件没有引入。
- 也有可能是运营商的问题,导致 JS 顺序错乱。
- 文件加载顺序错误,公共文件要先加载。
因为是老项目,之前是正常的,也没对引用文件做过修改,第一条就首先排除了。其次运行商的问题,自己也没法干预,也就先放一边。最后试了下第三种。
1.首先找到项目中根目录中 build 文件夹下的 webpack.prod.conf.js 文件,修改 plugins 中的配置
new HtmlWebpackPlugin({
filename: config.build.index,
template: "index.html",
inject: true,
favicon: resolve("favicon.ico"),
title: "**项目",
minify: {
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true
},
chunks: ["manifest", "vendor", "app"], // 此处修改成这种顺序
chunksSortMode: "dependency"
}),
2.还是在这个 plugins 中,调整下边的几个实例的顺序
new webpack.optimize.CommonsChunkPlugin({
name: "manifest",
minChunks: Infinity
}),
new webpack.optimize.CommonsChunkPlugin({
name: "vendor",
minChunks(module) {
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(path.join(__dirname, "../node_modules")) === 0
);
}
}),
new webpack.optimize.CommonsChunkPlugin({
name: "app",
async: "vendor-async",
children: true,
minChunks: 3
}),
重新打包
修改完成之后,重新打包部署,问题解决。