在 Android 上 React Native:无法运行程序“节点”:错误=2,没有这样的文件或目录

Ste*_*e C 18 android node.js react-native

iOS 版本运行良好,但在我的 Mac 上运行 Android Studio 时出现以下 Gradle Build 错误(解释):

:ReactNative:Running ‘[node, -e, console.log(require(‘react-native/cli’).bin);]’ command failed.

- Where:
Script ‘/Users/…/Desktop/…/node_modules/@react-native-community/cli-platform-android/native_modules.gradle’ line: 154

- What went wrong:
A problem occurred evaluating script.
> Cannot run program “node”: error=2, No such file or directory

Caused by: java.io.IOException: Cannot run program “node”: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试了很多东西:

我以前仍然可以在终端中运行 yarn android,但即使这样也已停止工作。

Mis*_*r X 391

这是因为 Android Studio 找不到节点,应该从终端窗口运行。

如果您使用的是 Mac,您可以在终端中使用此命令运行 Android Studio。请注意,如果 Android Studio 已在运行,则需要在运行命令之前完全关闭它。

1.运行这个 open -a /Applications/Android\ Studio.app

如果您通过 Jetbrains Toolbox 版本 1.x 安装了 Android Studio,请运行

open -a ~/Applications/JetBrains\ Toolbox/Android\ Studio.app
Run Code Online (Sandbox Code Playgroud)

如果您通过 Jetbrains Toolbox 版本 2.x 安装了 Android Studio,请运行

open "Applications/Android Studio.app"
Run Code Online (Sandbox Code Playgroud)

2.然后同步Gradle

这将解决问题。

注意:如果您通过 nvm 使用 Node,则应nvm use [version]在运行上述命令打开 Android Studio 之前在同一终端窗口中运行。

  • 为我在 Apple Silicon @TimurGaitov 工作,无论出于何种原因 Android Studio 不使用 .zshrc 路径变量,因此从终端打开它可确保它会 (20认同)
  • 我猜,这是 Android Studio Bumblebee 2021.1.1 中的一个错误。对于我的 Intel Mac 来说也是如此。相关错误报告,我发现:https://youtrack.jetbrains.com/issue/TBX-7313 (5认同)
  • 在 Android Studio Bumblebee 中修复 | 2021.1.1 补丁 1(2022 年 2 月):https://androidstudio.googleblog.com/2022/02/android-studio-bumblebee-202111-patch-1.html (3认同)

Jul*_* CB 105

就我而言,采用此设置:

  • 苹果芯片M1
  • Android Studio 北极狐 2020.3.1 补丁 2

我之前运行过上面提到的命令,但我一直收到同样的错误:

sudo ln -s "$(which node)" /usr/local/bin/node
Run Code Online (Sandbox Code Playgroud)

我必须更新项目中的 gradle 版本(android/gradle/wrapper/gradle-wrapper.properties

从:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
Run Code Online (Sandbox Code Playgroud)

到:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
Run Code Online (Sandbox Code Playgroud)

并在项目中执行此命令:

cd android && ./gradlew clean
Run Code Online (Sandbox Code Playgroud)

或者只是删除此文件夹而不是执行前面的命令:android/.gradle

完成这些步骤后我不再有任何问题。

  • 我已经使用 Gradle 6.9,但仍然遇到这个问题。 (2认同)

小智 55

解决方案

chmod +x /Applications/Android\ Studio.app/Contents/bin/printenv在终端中运行并重新启动 Android Studio 将使 gradle 同步再次工作。

细节

我正在使用最新的 Android Studio,并且我对该应用程序进行了补丁更新。我的系统在 M1 Pro Apple CPU 上运行 macOS 12.1。

重新启动后,我无法运行我的 React Native 应用程序,并且 gradle 同步失败。上述任何修复对我都没有帮助。idea.log于是我详细阅读了gradle日志文件。在日志的一开始,我看到应用程序printenv存在一些问题。

loading shell env: /bin/zsh -l -i -c '/Applications/Android Studio.app/Contents/bin/printenv' '/var/folders/7y/gz2kx4917yl_804mbfrnkqxc0000gn/T/intellij-shell-env.9046002349811239017.tmp' 
...
.intellij.util.EnvironmentUtil - can't get shell environment 
java.io.IOException: command [/bin/zsh, -l, -i, -c, '/Applications/Android Studio.app/Contents/bin/printenv' '/var/folders/7y/gz2kx4917yl_804mbfrnkqxc0000gn/T/intellij-shell-env.9046002349811239017.tmp']
exit code:126 text:0 out:zsh:1: permission denied: /Applications/Android Studio.app/Contents/bin/printenv
Run Code Online (Sandbox Code Playgroud)

之后,我转到文件夹 /Applications/Android Studio.app/Contents/bin/ 并printenv在我的终端中列出,发现它printenv没有执行权限:

-rw-r--r--@ 1 user admin 152080 Jan 28 09:12 printenv

安卓工作室

Android Studio 大黄蜂 | 2021.1.1 Build #AI-211.7628.21.2111.8092744,构建于 2022 年 1 月 19 日 运行时版本:11.0.11+0-b60-7772763 aarch64 VM:JetBrains sro 的 OpenJDK 64 位服务器 VM macOS 12.1 GC:G1 Young Generation ,G1 老一代内存:2048M 核心:10 注册表:external.system.auto.import.disabled=true

  • 这也是我的问题,同样的设置。尽管必须按如下方式输入命令以转义目录中的空格:`chmod +x /Applications/Android\ Studio.app/Contents/bin/printenv` (3认同)
  • 升级到 Android Studio Bumblebee 后,这也解决了我的问题。对于通过 Jetbrains Toolbox 安装 Android Studio 的人来说,修复方法是相同的,只是路径不同,即 `chmod +x ~/Library/Application\ Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/211.7628.21.2111 .8092744/Android\ Studio.app/Contents/bin/printenv` (2认同)

小智 39

对于M1 Mac,我下载了Android Studio(带有Apple芯片的Mac)版本并遇到了这个问题。

通过将 gradle 版本更改为 6.9-rc-1,它得到了修复。

这可以通过文件 -> 项目结构 -> 项目 -> Gradle 版本 -> 键入或选择“6.9-rc-1”并单击“确定”按钮来完成。

您也可以在这里找到类似和更多的解决方案。

Gradle 同步失败:原因:错误=2,没有这样的文件或目录


Mos*_*tav 33

只需将节点(之前由 nvm 安装)添加到 /usr/local/bin/ 作为符号链接即可解决。它对我来说效果很好。

sudo ln -s "$(which node)" /usr/local/bin/node
Run Code Online (Sandbox Code Playgroud)

Ubuntu 20.4,节点 14.15.0

  • 这解决了我的问题。之所以有效,是因为我曾经从加载了“.bashrc”的终端运行 Android Studio,因此知道在哪里可以找到节点可执行文件。当我在终端外运行 Android Studio 并且我的“.bashrc”未加载时,出现了问题。如果节点是使用 nvm 安装的,那么它在 PATH 上不会有可执行文件,除非您显式地将其添加到 PATH 中。上面的命令将添加一个符号链接到 PATH 上的“/usr/local/bin/”,它将指向节点可执行文件的位置。 (10认同)
  • 你太棒了,谢谢! (2认同)
  • 由于某种原因,这并不能解决问题,我使用的是 macOS catalina,您知道我还可以尝试什么吗? (2认同)

小智 17

在m1 mac中遇到同样的问题并通过终端打开 android studio对我有用
open -a /Applications/Android\ Studio.app


Jar*_*nen 16

Android Studio 使用在 Android Studio 进程启动时可用的 PATH 环境变量,并且您的 Node 二进制目录应该在该 PATH 中。

当我通过nvm(节点版本管理工具)安装节点时,我在 Linux 中遇到了同样的错误,该工具在 Bash 启动时设置节点路径。

我的问题是我从桌面启动了 Android Studio,因为没有执行 Bash 启动文件,所以也没有设置 Node 路径。

解决方案是从命令行运行 Android Studio。

您还可以尝试将 PATH 环境变量直接传递给 Android Studio,同时从命令行启动它:

PATH=$PATH:/path/to/node/bin/ /path/to/android/studio/bin/studio.sh
Run Code Online (Sandbox Code Playgroud)


leo*_*ooo 9

我在我的 Mac 上,我通过完全关闭 android studio 来解决这个问题?关闭进程?,然后重新启动它。

  • 谢谢,似乎是在 MacOS 更新后由于某种原因发生的,但重新启动后修复了。 (3认同)

ken*_*ken 9

在配备 M1 的 Mac 上,升级 Android Studio 解决了我的问题。我从北极狐升级到大黄蜂。

还使用了这个版本的 Gradle (android/gradle/wrapper/gradle-wrapper.properties):

distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip
Run Code Online (Sandbox Code Playgroud)


fri*_*mle 7

我刚刚也遇到了这个问题,对我来说,解决方案是停止运行 Gradle 守护进程:

./gradlew --stop
Run Code Online (Sandbox Code Playgroud)


pau*_*nga 6

我如何解决同样的问题。

  1. 通过终端打开Android studio
  2. 像以前一样构建项目

注意:我通过 nvm 安装了节点(我相信这就是我遇到问题的原因)

如果您通过 snap 安装了 android studio,那么通过命令行启动它非常简单。

在终端中打开项目文件夹并运行:

android-studio .


小智 6

在 Android Studio 中的“文件”选项卡上使缓存无效并重新启动。


lei*_*zeQ 5

我在我的 M1 mac mini 上为此困扰了很长时间。在 gradle 同步期间以及尝试从命令行运行 ./gradlew 命令时,在 Intellij IDEA 中打开 RN android 项目后,我收到此错误。

对我来说似乎有一个解决方案:

  • rm -rf .gradle(在 RN_PROJECT/android 文件夹中)
  • Killall java(停止运行 gradle 守护进程)
  • 将节点更新至 v16.8.0

我认为真正的解决方案是第一步。现在项目在 IDEA 中打开,没有错误,我可以运行 ./gradlew 命令。


小智 5

在android Studio中,我解决了这个问题,如下:

1 - 转到文件 - 使缓存无效/重新启动;2 - 选择选项“无效并重新启动”。