M1 mbp上新的RN项目构建失败。“找不到node。确保它在bash PATH中或设置NODE_BINARY环境变量。”

21
System:
    OS: macOS 11.3
    CPU: (8) arm64 Apple M1
    Memory: 124.86 MB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 16.0.0 - /opt/homebrew/bin/node
    Yarn: Not Found
    npm: 7.10.0 - /opt/homebrew/bin/npm
    Watchman: Not Found
  Managers:
    CocoaPods: 1.10.1 - /Users/chia/.rbenv/shims/pod
  SDKs:
    iOS SDK:
      Platforms: iOS 14.5, DriverKit 20.4, macOS 11.3, tvOS 14.5, watchOS 7.4
    Android SDK: Not Found
  IDEs:
    Android Studio: Not Found
    Xcode: 12.5/12E262 - /usr/bin/xcodebuild
  Languages:
    Java: Not Found
  npmPackages:
    @react-native-community/cli: Not Found
    react: 17.0.1 => 17.0.1 
    react-native: 0.64.0 => 0.64.0 
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

新的RN项目创建成功,但由于Xcode构建失败。

错误信息:

错误:找不到Node。请确保它在bash路径中或设置NODE_BINARY环境变量。

命令PhaseScriptExecution失败,具有非零退出代码

Node是由Homebrew安装的,在英特尔mbp上没有这个错误。

如何解决此错误?

确认Node是否在PATH中:

npm -g bin /opt/homebrew/bin

echo $PATH /Users/chia/.pyenv/shims:/Users/chia/.rbenv/shims:/Users/chia/.rbenv/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin

3个回答

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

它已解决。


1
谢谢伙计,至少帮我解决了M1s的一个构建问题。 - Berke
4
如果我已经拥有那个,但它仍然不起作用怎么办? - poPaTheGuru
5
无法在我的 M1 上工作。 - Dipendra Sharma
我的也没有。你需要重新启动或者做些什么来确保这个生效吗?或许是后台运行的 javagradle 守护进程的问题?我试一下。 - Joshua Pinter
不行,重启也没用。唉,我想现在只能通过终端启动Android Studio了... - Joshua Pinter
显示剩余4条评论

14

@pekanchuan在https://dev59.com/zFEG5IYBdhLWcg3wW7TO#67342683给出的答案对我很有用。

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

但是需要注意,如果这条命令显示/usr/local/bin/node: File exists,那么你需要知道该链接已经存在,可能是到不同版本的node。 在我的情况下,为了安装yarnbrew安装了一个单独的nodejs v15并将文件链接到其二进制文件。 虽然我使用nvm来拥有nodejs v14nodejs v16。这个额外的nodejs是导致问题的原因。

只需运行sudo rm -f /usr/local/bin/node以删除链接,然后运行命令sudo ln -s $(which node) /usr/local/bin/node创建正确的链接即可。


5
在我的 Mac M1 上,文件夹 /usr/local/bin 丢失了,所以我遇到了以下错误提示:
ln: /usr/local/bin/node: No such file or directory

这是我所做的事情:

cd /usr/local
sudo mkdir bin
sudo ln -s $(which node) /usr/local/bin/node

1
非常感谢,这解决了我的问题。 - Louis de Decker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接