首页 > 解决方案 > 在 Intellij 中执行 bash 命令不起作用

问题描述

我在“myproject/frontend/scripts”下的项目中有以下 .js 类:

#!/usr/bin/env node
'use strict';

const execSync = require('child_process').execSync;

function generateApiClientCommand() {
  return `java -jar ../../config/api/openapi-generator-cli-4.3.1.jar generate
      -i ../../config/api/api.yaml
      --generator-name typescript-angular
      --type-mappings Date=string
      -c ../../config/api/config.json
      -o ../src/app/shared/data-access/api`;
}

function generateApiClient() {
  execSync(generateApiClientCommand(), { stdio: 'inherit'});
}

generateApiClient();

用于创建开放 api 前端类。在我的 bash 中从 generateApiClientCommand() 执行该脚本没有任何问题,但是当在 maven 编译期间执行这个 .js 类时,我得到以下异常:

Error: Unable to access jarfile ../../config/api/openapi-generator-cli-4.3.1.jar
child_process.js:669
    throw err;
    ^
Error: Command failed: java -jar ../../config/api/openapi-generator-cli-4.3.1.jar generate
      -i ../../config/api/api.yaml
      --generator-name typescript-angular
      --type-mappings Date=string
      -c ../../config/api/config.json
      -o ../src/app/shared/data-access/api

该 .jar 位于此处:“myproject/config/api”

谢谢你的帮助!

标签: javabashintellij-ideaopenapi-generator

解决方案


如果您在 myproject 文件夹中并运行此脚本,那么您应该将 ../../ 替换为 ./ 类似这样的东西:

#!/usr/bin/env node
'use strict';

const execSync = require('child_process').execSync;

function generateApiClientCommand() {
  return `java -jar ./config/api/openapi-generator-cli-4.3.1.jar generate
      -i ./config/api/api.yaml
      --generator-name typescript-angular
      --type-mappings Date=string
      -c ./config/api/config.json
      -o ./frontend/src/app/shared/data-access/api`;
}

function generateApiClient() {
  execSync(generateApiClientCommand(), { stdio: 'inherit'});
}

generateApiClient();

推荐阅读