我们想使用 AsyncAPI 来记录我们的 RabbitMQ 消息传递。因此,我们安装了 asyncapi/generator 作为 npm 依赖项。
如果您查看 package.json
,您会发现它引用 npmi 作为依赖项,而后者又引用了 global-npm。如果我们要运行它,需要一个全局安装的节点和 npm。
现在,如果我们在没有全局安装 npm 的机器上运行生成器 ($ ag ./docs/asyncapi.yaml @asyncapi/html-template --output ./docs/asyncapi/ --force-write
),则会出现以下错误消息:
/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?
答案 0 :(得分:1)
如果您运行 ag
,您一开始一定是用 npm 安装的吧?所以 npm 很可能已经在这台机器上。
您遇到的错误,我只在 Windows 上看到过,当您将生成器作为依赖项时,并且很可能您使用了 nvm。
解决方案是 this,因此手动碰撞 global-npm
以在 npmi
中修复 this。这是一种解决方法,从长远来看,我认为我们需要摆脱对生成器的 npmi
依赖
答案 1 :(得分:0)
我们只有在使用 maven-frontend-plugin 安装 node/npm 的 CI/CD 管道中遇到这个问题。 npm 位于 java.lang.OutOfMemoryError: GC overhead limit exceeded
。这不是 AsyncAPI 查找 npm 的位置。为了解决这个问题,我们将 npm-cli.js(即 npm)从
将 maven-frontend-plugin 放到 AsyncApi 查找 npm node/node_modules
的众所周知的地方。
node_modules/.bin