uni-app 百度小程序第三方开发时 ext.json 没有被打包到 mp-baidu 中

uni-app 百度小程序第三方开发时 ext.json 没有被打包到 mp-baidu 中

开发环境 版本号 项目创建方式
Windows win 10? CLI
^2.0.0-31920210609001

产品分类:
uniapp/小程序/百度

操作步骤: *

预期结果:

ext.json 打包到 mp-baidu 根目录下

实际结果: *

bug描述:

如题,去年就有人提了,现在还没解决吗?  

另外,假如解决,如何适配多端第三方开发 ext.json 配置不同的问题?

更多关于uni-app 百度小程序第三方开发时 ext.json 没有被打包到 mp-baidu 中的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

是因为百度上传的时候不能携带 ext 文件吗?

更多关于uni-app 百度小程序第三方开发时 ext.json 没有被打包到 mp-baidu 中的实战教程也可以访问 https://www.itying.com/category-93-b0.html


const path = require(‘path’) const CopyWebpackPlugin = require(‘copy-webpack-plugin’) //最新版本copy-webpack-plugin插件暂不兼容,推荐v5.0.0
module.exports = { configureWebpack: { plugins: [ new CopyWebpackPlugin([ { from: path.join(dirname, ‘ext.json’), to: path.join(dirname, ‘dist’, process.env.NODE_ENV === ‘production’ ? ‘build’ : ‘dev’, process.env.UNI_PLATFORM, ‘ext.json’) } ]) ] } }

emmm,我做兼容处理了,开发环境的包不需要 ext 也能正常调试。这样做的原因是生产环境打包上传时,百度小程序如果存在ext.json文件会导致模板丢失,即虽然上传成功了,但是百度获取模板列表的接口获取不到。 从这种情况考虑的话,百度平台没有像微信平台编译时将 ext.json copy 到 bundle 中反而也不错。

在 uni-app 项目中,ext.json 文件需要手动配置才能正确打包到百度小程序的 mp-baidu 目录中。以下是解决方案:

  1. 手动配置 ext.json

    • 在项目根目录的 src 文件夹下创建 ext.json 文件,并填写百度小程序第三方平台所需的配置内容。
    • vue.config.js 中通过 configureWebpackchainWebpack 配置,将 ext.json 复制到 mp-baidu 目录。示例代码:
      const CopyWebpackPlugin = require('copy-webpack-plugin');
      module.exports = {
        configureWebpack: {
          plugins: [
            new CopyWebpackPlugin([
              { from: 'src/ext.json', to: 'mp-baidu/ext.json' }
            ])
          ]
        }
      };
      
    • 重新运行打包命令(如 npm run dev:mp-baidunpm run build:mp-baidu),检查 dist/mp-baidu 目录下是否生成 ext.json
  2. 多端适配 ext.json 配置

    • 为不同平台创建独立的配置文件,例如 ext.baidu.jsonext.weixin.json
    • 在打包脚本中根据平台动态选择文件。例如,修改 vue.config.js
      const platform = process.env.UNI_PLATFORM; // 获取当前平台
      const extFile = platform === 'mp-baidu' ? 'src/ext.baidu.json' : 'src/ext.default.json';
      module.exports = {
        configureWebpack: {
          plugins: [
            new CopyWebpackPlugin([
              { from: extFile, to: `${platform}/ext.json` }
            ])
          ]
        }
      };
回到顶部