javascript - Vue 异步组件不适用于 Webpack 热模块替换
问题描述
我正在尝试异步加载组件。它在生产构建中运行良好,但在开发中失败。我使用热模块替换进行开发,并且在控制台上出现组件无法加载的错误。
这就是我注册组件的方式:
Vue.component('product-page', ()=> import('./app/components/ProductPage.vue'));
错误:
vue.runtime.esm.js?2b0e:619 [Vue warn]: Failed to resolve async component: function () {
return Promise.all(/*! import() */[__webpack_require__.e(0), __webpack_require__.e(1), __webpack_require__.e(2), __webpack_require__.e(32)]).then(__webpack_require__.bind(null, /*! ././app/components/ProductPage.vue */ "./src/app/components/ProductPage.vue"));
}
在我的 webpack 配置中,我有:
output:{
path: path.resolve(__dirname, 'dist'),
filename: '[name].bundle.js' ,
publicPath: 'http://localhost:8088/',
}
我需要任何特殊配置还是我做错了什么?
解决方案
我找到了解决办法。我有两个用于开发的不同 webpack 开发服务器。Webpack 使用 jsonp 按需加载块。为两个服务器生成的加载块的函数是相同的。这导致解析块 url 出现问题。服务器 A 尝试使用服务 B 端口加载资产。
解决方案
我必须明确设置 jsonp 的函数名称。这可以通过 webpack输出配置属性来完成。
例子
ouput: {
filename: '[name].bundle.js',
jsonpFunction: 'myCustomFunctionName'
}
推荐阅读
- html - 将 HTML 过滤器应用于 nvarchar(max) 列上的 FREETEXT SQL 查询
- python - scikit-learn - 预测模型返回“错误”预测
- firebase - 没有匹配结果的 Flutter Firestore 查询导致使用 orderBy 时查询挂起
- c++ - 聚合初始化,将成员指针设置为相同的结构成员
- github - 从我的 GitHub 帐户中删除公共存储库
- javascript - 我想使用 jquery 从数据库中选择值并在同一页面上返回
- python - 从数据框中包含的列表中将列动态添加到 pandas 数据框
- python - Python - 避免保存 0 字节的文件?
- javascript - 有没有办法切换 setInterval
- angular - 使用 Angular CLI 的“ng e2e”时,是否可以让 Protractor 使用 Jasmine 3.5?或者使用 ng e2e 快速失败