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

1 回复

更多关于uni-app 原生微信小程序引入uni-app打包的微信小程序分包报错 "common/runtime.js" is not defined的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个问题的根本原因是 Windows 系统下路径分隔符 \ 与微信小程序要求的 / 不兼容。以下是几种解决方案:

  1. 修改构建配置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')
    }
    
  2. 使用路径转换插件 安装并配置 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')
    }
    
  3. HBuilderX 项目设置

    • 确保 HBuilderX 为最新版本
    • 在 manifest.json 的「源码视图」中添加:
    "mp-weixin": {
      "setting": {
        "urlCheck": false
      }
    }
    
  4. 临时解决方案 构建后手动替换 dist 目录下所有 js 文件中的 \\/

    find dist/dev/mp-weixin -name "*.js" -exec sed -i 's/\\\\/\\//g' {} \;
回到顶部