WhatAKitty Daily

A Programmer's Daily Record

RealmJS在XCode编译安装下失败

WhatAKitty   阅读次数loading...

背景

RealmJS发布了2.x.x的版本,新增了一些特性和修复了一些bug,所以决定将它升级。

升级的过程很顺利,在虚拟机上运行的时候没有任何问题,不过在安装到真机进行测试的时候,却发生了一个错误:

1
2
3
4
5
6
7
PhaseScriptExecution Download\ Core /Users/me/Library/Developer/Xcode/DerivedData/Ology-dyfbenzvbbghgeebclxmorqgivwr/Build/Intermediates.noindex/RealmJS.build/Debug-iphonesimulator/RealmJS.build/Script-F63FF2C51C12462600B3B8E0.sh
cd /Users/me/project/node_modules/realm/src
/bin/sh -c /Users/me/Library/Developer/Xcode/DerivedData/Ology-dyfbenzvbbghgeebclxmorqgivwr/Build/Intermediates.noindex/RealmJS.build/Debug-iphonesimulator/RealmJS.build/Script-F63FF2C51C12462600B3B8E0.sh

/Users/me/Library/Developer/Xcode/DerivedData/Ology-dyfbenzvbbghgeebclxmorqgivwr/Build/Intermediates.noindex/RealmJS.build/Debug-iphonesimulator/RealmJS.build/Script-F63FF2C51C12462600B3B8E0.sh:
line 2: node: command not found
Command /bin/sh failed with exit code 127

如何解决

在Realmjs的github issues内查找了一些相关资料,还真找到了一个相同的错误:node: command not found。他跟我所发生的情况一致,都是在真机以Release安装的时候出现问题。

造成的原因很简单,由于XCode无法识别由nvm安装的node,因为nvm在安装node的时候,会将node安装到~/.nvm/versions目录下。但是很不幸的是,XCode只会在/bin/sh目录下去运行程序,所以,没法看到在~/.nvm/versions目录下的node。

所以,我们只需要将node程序软连接到/usr/local/bin/下面即可:

1
ln -s $(which node) /usr/local/bin/node

再试一次,XCode很完美的将APP安装到了手机内。

扩展

不过,这样有个缺点,如果你使用nvm来安装另外一个版本,需要重新运行上述那个命令,否则XCode运行的仍旧是上次旧的node版本。具体的原因看这段话,我这里就不具体描述了。