問題根因
眾所周知的網(wǎng)絡(luò)原因, 安裝 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查看
設(shè)置好以上代碼后,在項目的 ios 文件夾下運行 pod install 就可以順利安裝 RealmJS 了。
同類問題
使用yarn命令后,會導(dǎo)致realm 包恢復(fù)到初始狀態(tài)。可以按著以上步驟進行修復(fù)。