uni-app 原生微信小程序引入uni-app打包的微信小程序分包报错 "common/runtime.js" is not defined
uni-app 原生微信小程序引入uni-app打包的微信小程序分包报错 “common/runtime.js” is not defined
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | windows10 | HBuilderX |
操作步骤:
- 运行
npm run build:mp-weixin -- --subpackage=subpackage
预期结果:
- 页面正常显示
实际结果:
- Error: module “subpackage/…commonruntime.js” is not defined
bug描述:
运行 npm run build:mp-weixin -- --subpackage=subpackage
后将打包项目拖至微信小程序,打开分包页面提示
Error: module "subpackage/....commonruntime.js" is not defined
查看打包的uniapp 分包,发现页面js 里面引入的runtime.js 为
require('....\common\runtime.js');
require('....\common\vendor.js');
require('....\common\main.js');
微信小程序无法识别 \
, 导致,如果有多个页面还需要手动将 \
替换为 /
。
有没有什么解决办法?
更多关于uni-app 原生微信小程序引入uni-app打包的微信小程序分包报错 "common/runtime.js" is not defined的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app 原生微信小程序引入uni-app打包的微信小程序分包报错 "common/runtime.js" is not defined的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题的根本原因是 Windows 系统下路径分隔符 \
与微信小程序要求的 /
不兼容。以下是几种解决方案:
-
修改构建配置 在
vue.config.js
中添加 webpack 配置:configureWebpack: { output: { path: require('path').resolve(__dirname, './dist/dev/mp-weixin'), filename: '[name].js', chunkFilename: '[name].js' }, plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV) }) ] }, chainWebpack: config => { config.output.chunkFilename('[name].js') }
-
使用路径转换插件 安装并配置
normalize-path
:const normalizePath = require('normalize-path') chainWebpack: config => { config.plugin('define') .tap(args => { args[0]['process.env'].NODE_ENV = JSON.stringify(process.env.NODE_ENV) return args }) config.module .rule('js') .test(/\.js$/) .use('path-normalize') .loader('./path-normalize-loader') }
-
HBuilderX 项目设置
- 确保 HBuilderX 为最新版本
- 在 manifest.json 的「源码视图」中添加:
"mp-weixin": { "setting": { "urlCheck": false } }
-
临时解决方案 构建后手动替换 dist 目录下所有 js 文件中的
\\
为/
:find dist/dev/mp-weixin -name "*.js" -exec sed -i 's/\\\\/\\//g' {} \;