uni-app iOS 真机sqlite一直弹窗 已勾选sqlite模块但一直提示未配置 安卓没问题

发布于 1周前 作者 phonegap100 来自 Uni-App

uni-app iOS 真机sqlite一直弹窗 已勾选sqlite模块但一直提示未配置 安卓没问题

操作步骤:

  1. 勾选sqlite模块
  2. ios重新打包自定义基座
  3. 真机测试 只要操作sqlite 就一直弹窗

预期结果:

  • 不弹窗

实际结果:

  • 一直弹窗

bug描述:

iOS 自定义基座真机sqlite一直弹窗 已经勾选sqlite模块但是一直提示没有配置; 自定义基座也重新打包 也不好使; 安卓没问题一切正常;

图片

Image 1 Image 2 Image 3

项目信息

信息类别 详细信息
产品分类 uniapp/App
PC操作系统 Mac
PC操作系统版本 13.5.1 (22G90)
HBuilderX类型 正式
HBuilderX版本 3.98
手机系统 iOS
手机系统版本 iOS 16
手机厂商 苹果
手机机型 iphone 13 pro
页面类型 vue
Vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

6 回复

给之前的卸载,再自定义基座


解决了多谢

没重新打自定义基座吧

现在可以了换了个测试机(也是醉了)

在使用 uni-app 开发 iOS 应用时,如果遇到 SQLite 模块在真机上一直弹窗提示未配置的问题,而 Android 平台正常,可能是由于以下原因导致的。以下是一些排查和解决方案:


1. 确认 SQLite 模块已正确配置

  • manifest.json 文件中,确保已勾选 SQLite 模块。
  • 检查 manifest.json 文件内容,确保配置正确:
    {
      "app-plus": {
        "modules": {
          "SQLite": {}
        }
      }
    }

2. 检查 iOS 平台配置

  • 确保在 manifest.json 中正确配置了 iOS 平台的相关设置。
  • 检查 manifest.json 文件中的 ios 节点,确保没有遗漏配置。

3. 重新生成 iOS 项目

  • 删除 unpackageplatforms/ios 文件夹。
  • 重新运行 npm run dev:customnpm run build:custom,重新生成 iOS 项目。

4. 检查插件版本

  • 确保使用的 SQLite 插件是最新版本。
  • 如果使用的是第三方 SQLite 插件,检查插件是否支持 iOS 平台。

5. 真机调试日志

  • 在真机调试时,查看控制台日志,确认是否有其他错误信息。
  • 使用 console.loguni.showModal 输出调试信息,检查 SQLite 模块是否正常加载。

6. 检查 iOS 权限

  • 确保在 manifest.json 中配置了必要的 iOS 权限。
  • 例如,如果需要访问本地文件,确保已添加 NSDocumentsFolderUsageDescription 权限。

7. 更新 HBuilderX

  • 确保使用的 HBuilderX 是最新版本。
  • 旧版本可能存在兼容性问题,更新到最新版本后重新尝试。

8. 使用原生插件

  • 如果问题仍然存在,可以尝试使用原生插件(如 cordova-sqlite-storage)替代 uni-app 自带的 SQLite 模块。
  • 安装插件后,按照插件文档进行配置和使用。

9. 联系官方支持

  • 如果以上方法均无法解决问题,可以联系 uni-app 官方支持团队,提供详细的错误日志和复现步骤,寻求帮助。

示例代码

以下是一个简单的 SQLite 使用示例,确保代码逻辑正确:

// 打开数据库
const db = plus.sqlite.openDatabase({
  name: 'test.db',
  path: '_doc/test.db'
});

// 创建表
db.transaction(function(tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, name TEXT)');
});

// 插入数据
db.transaction(function(tx) {
  tx.executeSql('INSERT INTO test (name) VALUES (?)', ['uni-app']);
});

// 查询数据
db.transaction(function(tx) {
  tx.executeSql('SELECT * FROM test', [], function(tx, result) {
    console.log(result.rows);
  });
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!