针对vue项目报错webpackJsonp is not defined的问题,我们可以采用以下的攻略:
问题描述
在使用VueCLI 2.x或3.x创建的vue项目中,我们可能会遇到下面这样的报错信息:
Uncaught ReferenceError: webpackJsonp is not defined
这个错误通常会发生在项目打包(npm run build)后,打开浏览器访问页面的时候。
解决方法
方法一:升级webpack和/或vue-cli版本
首先,我们可以尝试升级webpack和/或vue-cli版本,因为这个问题往往是由于webpack和vue-cli的版本不兼容造成的。具体步骤如下:
1.1 升级webpack
我们可以在项目根目录下找到package.json文件,查看当前项目安装的webpack版本号,如下所示:
"devDependencies": {
"webpack": "^4.41.2",
// ...
}
如果你的webpack版本号低于4.x,建议升级到4.x或以上版本。具体可参考以下文档:webpack中文官网。
1.2 升级vue-cli
升级vue-cli可以通过以下命令完成:
npm update -g @vue/cli
如果你是使用vue-cli 3.x创建的项目,建议升级到最新版本。具体可参考以下文档:Vue CLI官方文档。
方法二:调整webpack配置
如果升级webpack和vue-cli版本后仍然无法解决问题,那么我们就需要手动调整webpack的配置。具体步骤如下:
2.1 打开webpack配置文件
我们可以在项目根目录下找到vue.config.js文件(如果不存在,可以新建一个)。然后在该文件中添加以下代码:
module.exports = {
configureWebpack: {
output: {
// 把引入模块时 webpackJsonp 错误修改为 __webpack_require__.jsonp
jsonpFunction: '__webpack_require__.jsonp'
}
}
}
2.2 重新打包项目
修改完webpack配置后,我们需要重新打包一下项目(npm run build),然后再启动项目即可。如果还是出现webpackJsonp is not defined的问题,可以继续尝试其他方法。
方法三:手动修改生成的index.html文件
如果以上两种方法都无法解决问题,那么我们只能采用比较暴力的方法了:手动修改生成的index.html文件。具体步骤如下:
3.1 打开index.html文件
我们可以在dist目录下找到生成的index.html文件,使用编辑器打开该文件。
3.2 修改index.html文件
在index.html文件中,我们需要将下面这行代码中的”webpackJsonp”改为”webpack_require.jsonp”,代码如下:
<script src="/js/chunks/vendor.6d2b2da6.js"></script>
修改后的代码如下:
<script src="/js/chunks/vendor.6d2b2da6.js" type="text/javascript"></script>
<script type="text/javascript">
!function () {
// webpackBootstrap
var t = window.webpackJsonp;
window.webpackJsonp = function (e, n, r) {
// do something...
};
}();
</script>
3.3 重新打包项目
修改完index.html文件后,我们需要重新打包一下项目(npm run build),然后再启动项目即可。
示例说明
下面我来举两个示例说明,帮助大家更好地理解如何解决webpackJsonp is not defined问题。
示例一:升级webpack版本
我们有一个使用VueCLI 3.x创建的vue项目,打包后总是报错:Uncaught ReferenceError: webpackJsonp is not defined。
我们查看该项目根目录下的package.json文件,发现webpack的版本号是3.12.0。因此,我们尝试升级webpack版本。具体步骤如下:
- 执行以下命令升级webpack:
npm install webpack@4.44.2 --save-dev
- 升级完webpack后,重新打包项目:
npm run build
- 测试项目是否可以正确运行。
示例二:调整webpack配置
我们有一个使用VueCLI 2.x创建的vue项目,打包后总是报错:Uncaught ReferenceError: webpackJsonp is not defined。
我们尝试手动调整webpack的配置,具体步骤如下:
-
在该项目根目录下新建vue.config.js文件。
-
在该文件中添加以下代码:
module.exports = {
configureWebpack: {
output: {
jsonpFunction: '__webpack_require__.jsonp'
}
}
}
- 重新打包项目:
npm run build
- 测试项目是否可以正确运行。
以上就是解决vue项目报错webpackJsonp is not defined问题的完整攻略,希望可以帮助到各位开发者!