解决 pod install 时 RealmJS 安装过慢的问题

问题根因

众所周知的网络原因, 安装 realm JS 时候需要下载 realm-sync-cocoa-5.0.0-beta.0.tar.gz 包。(注意:版本号可能会有变化)

解决思路

在 node_modules 下找到 realm , 并查看 RealmeJS.podspec 文件。
可以看到在 prepare_command 中运行了如下脚本:

node ./scripts/download-realm.js ios --sync

打开命令行工具入理 term2 。进入node_modules/realm直接运行此命令。
可以看到需要下载的包地址。 通过下载地址,直接在浏览器中下载。(需要使用众所周知的方法)
下载好后,修改./scripts/download-realm.js文件的 acquire 方法。 跳过下载步骤,直接将 syncPath 指向下载包的存放地址。 例如:

function acquire(desired, target) {
    const corePath = desired.CORE_ARCHIVE && path.resolve(getTempDir(), desired.CORE_ARCHIVE);
    // const syncPath = desired.SYNC_ARCHIVE && path.resolve(getTempDir(), desired.SYNC_ARCHIVE);
    const syncPath = desired.SYNC_ARCHIVE && path.resolve("/Users/USER_NAME/Downloads", desired.SYNC_ARCHIVE);
    console.info('syncPath==>', syncPath, desired.SYNC_ARCHIVE, getTempDir());

    return fs.emptyDir(target)
        .then(() => corePath && download(desired.CORE_SERVER_FOLDER, desired.CORE_ARCHIVE, corePath))
        .then(() => corePath && extract(corePath, target, desired.CORE_ARCHIVE_ROOT))
        // .then(() => syncPath && download(desired.SYNC_SERVER_FOLDER, desired.SYNC_ARCHIVE, syncPath))
        .then(() => syncPath && extract(syncPath, target, desired.SYNC_ARCHIVE_ROOT))
        .then(() => writeLockfile(target, desired))
}

USER_NAME 需要替换成正确的名字,如不知道可以 cd ~ && pwd 查看

设置好以上代码后,在项目的 ios 文件夹下运行 pod install 就可以顺利安装 RealmJS 了。

同类问题

使用yarn命令后,会导致realm 包恢复到初始状态。可以按着以上步骤进行修复。

你可能感兴趣的:(解决 pod install 时 RealmJS 安装过慢的问题)