A problem occurred starting process 'command 'node''

ReactNative的热更新,微软提供了CodePush的解决方案,在Android集成时遇到了如下问题:

1
2
Error:Execution failed for task ':app:recordFilesBeforeBundleCommandDebug'.
> A problem occurred starting process 'command 'node''

node命令无法执行,我的环境是mac/Android Studio3.0/BuildTool26.0.2,查了好多资料,最后在ReactNative的issue中找到了答案,记录如下:

  • 找到codepush.gradle文件
    集成code push的时候,在项目的gradle文件中加了如下一行代码,指明了codepush.gradle的位置

    1
    apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
  • 修改nodeExecutableAndArgs的值

    codepush.gradle文件中定义了nodeExecutableAndArgs如下:

1
def nodeExecutableAndArgs = config.nodeExecutableAndArgs ?: ["node"]

粗暴的修改可以是这样子:

1
def nodeExecutableAndArgs = config.nodeExecutableAndArgs ?: ["/usr/local/bin/node"]

“/usr/local/bin/node” 可以通过命令 which node查看node的位置。

但是我们项目可能会有jekins等自动打包测试,所以为了降低对别人的影响最好修改如下:

1
2
3
4
// Android studio bug hack
if (System.properties['os.name'].contains("Mac")) {
project.ext.react.nodeExecutableAndArgs = ["/usr/local/bin/node"]
}

以上。

参考:
ReactNative ISSUE6875

赞赏还是要有的QAQ
100斤 WeChat Pay

微信打赏

100斤 Alipay

支付宝打赏