简体   繁体   English

在 CircleCI 作业中找不到 Java,正在运行 Node.js 测试

[英]Java not found in CircleCI job, running Node.js tests

For running my Node.js tests (which require Java) I used this configuriation:为了运行我的 Node.js 测试(需要 Java),我使用了这个配置:

version: 2.1

orbs:
  node: circleci/node@4.7.0
  
jobs:
  build_and_test:
    docker:
      - image: cimg/openjdk:17.0.2-node
    resource_class: large
    steps:
      - checkout
      - run: java --version
      - run: node --version
      - node/install-packages:
          pkg-manager: npm
      - run:
          command: npm run test
          name: Run tests
            
workflows:
    validation:
        jobs:
            - build_and_test
            

As you can see I use the language variant for the OpenJDK with Node.如您所见,我将 OpenJDK 的语言变体与 Node.js 结合使用。 The version checks both succeed, so Java is actually available.版本检查都成功了,所以 Java 实际上是可用的。

However, when I spawn a process in my tests to run Java, it fails:但是,当我在测试中生成一个进程以运行 Java 时,它失败了:

            const java = child_process.spawn("java", parameters, spawnOptions);
            if (!java.connected) {
                resolve("Java not installed");

                return;
            }

Is there something special I have to consider when spawing processes in CircleCI or is something else required, which I haven't done yet?在 CircleCI 中生成进程时,我是否需要考虑一些特别的事情,或者是否需要其他我尚未完成的事情?

The problem is the check for the process.问题是检查过程。 While this works well locally, it does not in environments like CircleCI.虽然这在本地运行良好,但在 CircleCI 这样的环境中却行不通。 Instead use the error event of the child process, like:而是使用子进程的错误事件,例如:

            java.on("error", (error) => {
                resolve(`Error while running Java: "${error.message}". Is Java installed on you machine?`);
            });


声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM