# 其他框架兼容问题

## 一、自动兼容处理说明
为帮助开发者快速完成第三方框架兼容以顺利完成将小程序编译成多端应用进行测试，开发者工具已支持检测到疑似使用与微信多端框架有兼容性问题的第三方框架后可自动进行兼容性处理的功能。

当前开发者工具对「与小程序多端框架有兼容性问题的第三方框架」的兼容性处理具体的实现为：在有兼容性问题的 `vendor.js` 中添加新增字符串 "miniapp"，且出现下方的提示告知开发者本次的处理对哪些文件进行了修改，以及开发者工具亦将修改之前的 `vendor.js` 进行备份，方便开发者进行恢复。
- 注意：开发者可前往「详情 - 本地设置」取消勾选第三方框架自动兼容处理

![](https://testchu-7gy8occc8dcc14c3-1304825656.tcloudbaseapp.com/img%2Fmelody%2F202308241550297.png)

## 二、app.json & project.miniapp.json 兼容

### 问题描述
部分开发者基于第三方框架开发的项目（以下称源项目），在生成微信小程序并升级成多端应用后，使用第三方框架再次编译时可能会遇到如下问题：
- 在源项目的微信小程序产物目录下，app.json 文件里的部分内容被删除，例如：miniApp.useAuthorizePage
- 在源项目的微信小程序产物目录下，project.miniapp.json 文件被删除

  ![](https://res.wx.qq.com/op_res/I78lneZf9jQBd0zqhgo1zRvx2CUBb2F0qDYslEji-wjlYibBDNrj-yvwWll9GmQmAM2x-VIStWGWWfpWJ3_60g)

### 解决方案

操作流程如下：
  - 注意：请使用最新的 Nightly 版开发者工具进行下列操作 [微信开发者工具下载地址](/miniprogram/dev/devtools/download.md)。

1、用微信开发者工具打开源项目生成的小程序产物 -> 升级为多端应用（确保已勾选兼容第三方框架）-> 复制工具生成的 project.miniapp.json 至任意目录（建议放置在源项目的 src 目录下）。

![](https://res.wx.qq.com/op_res/I78lneZf9jQBd0zqhgo1zQX9_39YQJbrovwO-J1LtfJ996hZil__skrrEWDzcRzCLIVe0kIWzjS1FI8CsS2pHw)

![](https://res.wx.qq.com/op_res/FZVVx7G8HHgH2ely6zqw1GaN-RRt91wR3oJGcqm6WCiOuFkNrAbQGUdQuJOBI75LUfj-lnCf1nXK9P-IWN6vJQ)

![](https://res.wx.qq.com/op_res/kz_1rDLw2tknLzD08T9acCa5RJUkUCeaSplhdhIMfO8zHl2aMP7PzXlAOvW88N1at5q06J32iA2MsUS_yJdHAg)

2、用任意 IDE 打开源项目 -> 打开 src 目录下的 manifest.json 文件 -> 在 "mp-weixin" 的 "setting" 里添加如下参数：
``` json
  /* manifest.json */
  "mp-weixin": {
      "setting": {
          /* 添加如下参数，以恢复 app.json 文件里的部分内容 */
          "useMiniAppAuthorizePage": true,
          /* 添加如下参数，以恢复 project.miniapp.json 文件 */
          "copyMiniAppJsonPath": "../../../src/project.miniapp.json"
          /* 注意：此路径是相对于小程序源码包下 project.config.json 的路径，请根据自己的项目计算好层级，上图示例为三层 */
        }
    }
```

3、再次用微信开发者工具打开小程序项目（多端应用模式），被删除的内容/文件将自动恢复。

**参数说明**

  | 参数    | 必填  | 类型   | 示例值     | 说明      |
  |-------------------------|-----|---------|---------------------------------------------|-----------------------------------|
  | useMiniAppAuthorizePage | 否   | boolean |   true                 | 接入小程序授权页（身份管理服务）；注意：此设置会覆盖 app.json 里的 useAuthorizePage，因为两者的作用相同                  |
  | copyMiniAppJsonPath     | 是   | string  | "\.\./\.\./\.\./src/project\.miniapp\.json" | project\.miniapp\.json 文件存放的具体路径 |

## 三、补充说明

- 对于有兼容性问题的第三方框架，如不进行处理，小程序编译为多端应用后其表现为白屏，影响开发者正常使用多端应用。

- 并非所有的第三方框架开发的小程序编译为多端应用都有兼容性问题，开发者工具这里只是处理开发者反馈出现问题较多的某第三方框架的兼容性问题，如出现新的兼容问题而开发者工具尚未兼容处理，可前往社区反馈。
