Ped*_*que 9 java intellij-idea gradle npm npm-install
我正在尝试在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
Run Code Online (Sandbox Code Playgroud)
这是我的任务:
task npmInstall(type: Exec) {
commandLine "npm", "install"
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
如果你在 Windows 上试试这个:
task npmInstall(type: Exec) {
commandLine "npm.cmd", "install"
}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
task npmInstall(type: Exec) {
commandLine "npm", "install"
}
Run Code Online (Sandbox Code Playgroud)
这个答案对我来说适用于不同的 npm 相关任务。建议使用可执行文件和 args 而不是命令行。
executable 'npm'
args ['install']
根据您的目录结构,您可能还需要添加 workingDir 属性并将其设置为 package.json 所在的目录。
作为替代方案,Gradle 节点插件对于管理 Gradle 构建中最常见的节点任务也非常方便。我使用这个插件作为我的 Node 任务的基础,然后根据需要创建其他自定义任务。
如果您使用的是 Windows 操作系统,则必须使用“npm.cmd”而不是“npm”。更好地检测操作系统是否为 windows 并构建您的 npm 命令。请看下面的代码片段,
import org.apache.tools.ant.taskdefs.condition.Os
task npmInstall(type: Exec) {
String npm = 'npm';
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
npm = 'npm.cmd'
}
workingDir 'src/main/webapp'
commandLine npm, 'install'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15005 次 |
| 最近记录: |