0

我们想使用AsyncAPI来记录我们的 RabbitMQ 消息传递。因此,我们安装了asyncapi/generator作为 npm 依赖项。

如果您看一下,package.json您会发现它引用npmi作为依赖项,而依赖项又引用了global-npm。如果我们想运行它,需要一个全局安装的节点和 npm。

现在,如果我们在$ ag ./docs/asyncapi.yaml @asyncapi/html-template --output ./docs/asyncapi/ --force-write没有全局安装 npm 的机器上运行生成器 (),则会出现以下错误消息:

/path/to/project/node_modules/global-npm/index.js:13
  throw err
  ^

Error: Cannot find module 'npm'
    at throwNotFoundError (/path/to/project/node_modules/global-npm/index.js:11:13)
    at /path/to/project/node_modules/global-npm/index.js:39:5
...

作为一种解决方法,我们将 npm 本身声明为依赖项:

"dependencies": {
    "@asyncapi/generator": "^1.1.4",
    "@asyncapi/html-template": "^0.15.4",
    "@asyncapi/markdown-template": "^0.11.1",
    "npm": "^6.14.9",
    ...

我从来没有见过这样的事情。这是可以接受的还是我们需要在我们的机器上单独安装我们的 npm?

4

2 回答 2

1

如果您运行ag,您最初必须使用 npm 安装它,对吗?所以 npm 很可能已经在这台机器上。

您遇到的错误,我只在 Windows 上看到,当您将生成器作为依赖项时,并且很可能您使用 nvm。

解决方案是这个,所以手动颠簸的global-npm这个固定的npmi。这是一种解决方法,从长远来看,我认为我们需要摆脱对npmi生成器的依赖,我认为

于 2021-02-03T14:32:23.570 回答
0

我们只在我们的 CI/CD 管道中使用 maven-frontend-plugin 安装了 node/npm 时遇到了这个问题。npm 位于node/node_modules. 这不是 AsyncAPI 查找 npm 的位置。为了解决这个问题,我们将 npm-cli.js(即 npm)从 maven-frontend-plugin 链接到 AsyncApi 查找 npm 的众所周知的地方node_modules/.bin

- ln -sf "$(pwd)/node/node_modules/npm/bin/npm-cli.js" "$(pwd)/node_modules/.bin/npm"

于 2021-02-05T08:36:11.347 回答