问题根因
众所周知的网络原因, 安装 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 包恢复到初始状态。可以按着以上步骤进行修复。