Gradle 无法执行 npm 命令

2022-09-03 05:56:23

我正在尝试在gradle任务中运行npm命令,但我得到一个奇怪的错误:

Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'npm'
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
    at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:65)
    ... 2 more
Caused by: java.io.IOException: Cannot run program "npm" (in directory "/Users/psilva/Documents/projects/registrolivre"): error=2, No such file or directory
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
    ... 4 more
Caused by: java.io.IOException: error=2, No such file or directory

这是我的任务:

task npmInstall(type: Exec) {
    commandLine "npm", "install"
}

有人可以帮忙吗?


答案 1

如果您使用的是Windows,请尝试以下操作:

task npmInstall(type: Exec) {
    commandLine "npm.cmd", "install"
}

而不是这样:

task npmInstall(type: Exec) {
    commandLine "npm", "install"
}

答案 2

这个答案适用于我与npm相关的不同任务。建议使用可执行文件和参数而不是命令行。

executable 'npm' args ['install']

根据您的目录结构,您可能还需要添加 workingDir 属性,并将其设置为 package.json 所在的目录。

作为替代方案,Gradle Node插件对于管理Gradle构建中最常见的Node任务也非常方便。我使用此插件作为我的Node任务的基础,然后根据需要创建其他自定义任务。