java - 无法使用 gradle Node 插件运行 Node

标签 java node.js docker gradle gitlab

我们正在使用 gradle node 插件从 gradle 构建我们的 Node 项目。我们选择的gitlab ci模板使用gradle:alpine docker镜像。在我们的工作中,我们运行 gradle wrapper。构建失败并显示“环境:无法执行‘ Node ’:没有这样的文件或目录”。它在我们的 Linux 开发箱上构建良好。

这是堆栈跟踪:

Caused by: java.io.IOException: Cannot run program "/builds/myueser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/node" (in directory "/builds/myueser/myproj"): error=2, No such file or directory
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
    ... 6 more
Caused by: java.io.IOException: error=2, No such file or directory

这里是 gitlab-ci.yml 的相关内容:

image: gradle:alpine

variables:
 GRADLE_OPTS: "-Dorg.gradle.daemon=false"
 GIT_STRATEGY: clone

before_script:
 - export GRADLE_USER_HOME=`pwd`/.gradle
 - export PATH=`pwd`/.gradle/nodejs/node-v10.11.0-linux-x64/bin:$PATH

deploy-ui:
 stage: deploy
 script: ./gradlew --build-cache assemble deploymyprojWeb --debug
 cache:
   key: "$CI_COMMIT_REF_NAME"
   policy: pull
   paths:
     - build
     - .gradle

此外,以下内容来自 build.gradle 文件:

plugins {
  id "com.moowork.node" version "1.2.0"
  id 'com.adarshr.test-logger' version '1.5.0'
}

apply plugin: "java"
apply plugin: "groovy"

repositories {
    jcenter()
}

dependencies {
    testCompile(
            'junit:junit:4.12',
            'org.codehaus.groovy:groovy-all:2.4.15',
            'org.spockframework:spock-core:1.1-groovy-2.4',
            gradleTestKit()
    )
}

node {
    version = '10.11.0'
    download = true
}

npm_install {
    args = ["$project.projectDir/myproj", '--prefix',"$project.projectDir/myproj"]
}

task deploymyprojWeb(type: NpmTask) {
    args = ['run','deploy', '--prefix',"$project.projectDir/myproj"]
}
deploymyprojWeb.dependsOn npm_install

wrapper {
   gradleVersion = '4.10.2' //version required
}

Node 分发文件夹(/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin)的内容:

/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/npx
Exec: true
Write: true
Read: true
/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/node
Exec: true
Write: true
Read: true
/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin/npm
Exec: true
Write: true
Read: true

此外,它在 PATH 变量中:

PATH=/builds/myuser/myproj/.gradle/nodejs/node-v10.11.0-linux-x64/bin:

最佳答案

gradle:alpine 图像在使用 node 时出现问题。我通过切换到 gradle:slim 图像解决了这个问题;这适用于 Node 和 gradle Node 插件。

关于java - 无法使用 gradle Node 插件运行 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52766981/

相关文章:

java - 为什么我的自定义 GridView 仅显示一列?

java - 如何从时间(小时)中删除前导零

mysql - 从数据库调用后,我的 Base64 图像以不同的格式返回

javascript - 无法在 Node.js ES6 中使用 eval 创建变量

docker - 要求 apt::source 作为依赖项会出现语法错误

java - JTextArea txt; txt.getText() 跳过 "\n"

java - 如何将特定属性的所有值加入列表中?

Node.js:是否有部署模块可以合并 javascript 文件并缩小它们?

nginx - 一个nginx上的两个docker app容器

nginx - Docker 带有一个 nginx 和一个共享 UNIX 套接字的 uwsgi 容器