Node.js npm专用全局作用域:未找到命令

Node.js npm专用全局作用域:未找到命令,node.js,npm,gitlab,npm-install,Node.js,Npm,Gitlab,Npm Install,我使用发布了一个私有NPM包,需要确定其范围 此软件包应该添加一个全局可用的sspm命令,以用作CLI 当我使用npm install-g@{ORG}/{PACKAGE_NAME}从存储库安装它时,它被正确地添加到/usr/local/lib/node_modules/@{ORG}/{PACKAGE_NAME}下,并且文件似乎正确,但是当我运行以下命令之一时,找不到该命令: #zsh:未找到命令:sspm​ sspm @{ORG}/sspm @{ORG}\/sspm 但是,如果我使用项目路径而

我使用发布了一个私有NPM包,需要确定其范围

此软件包应该添加一个全局可用的
sspm
命令,以用作CLI

当我使用
npm install-g@{ORG}/{PACKAGE_NAME}
从存储库安装它时,它被正确地添加到
/usr/local/lib/node_modules/@{ORG}/{PACKAGE_NAME}
下,并且文件似乎正确,但是当我运行以下命令之一时,找不到该命令:

#zsh:未找到命令:sspm​
sspm
@{ORG}/sspm
@{ORG}\/sspm
但是,如果我使用项目路径而不是名称全局安装包,它就可以工作(即使我使用其名称安装包时,文件已正确下载)

这是我在这之前所做的一切

npm安装-g@{ORG}/{PACKAGE_NAME}
未找到sspm#命令
npm卸载-g@{ORG}/{PACKAGE_NAME}
npm install-g./#从项目目录安装项目
sspm工程
这是我的
package.json
文件:

{
“名称”:“@{ORG}/{PACKAGE_name}”,
“版本”:“1.0.0”,
“main”:“src/index.js”,
“publishConfig”:{
“@{ORG}:注册表”:”https://gitlab.com/api/v4/projects/.../packages/npm/"
},
“bin”:{
“sspm”:“/bin/main.js”
},
“脚本”:{…},
“存储库”:{
“url”:”https://gitlab.com/..."
},
“臭虫”:{
“url”:”https://gitlab.com/..."
},
“主页”:https://gitlab.com/...,
“依赖性”:{…},
“依赖项”:{…}
}
更新(2021-04-20) 检查NPM位置的命令(通过运行
NPM bin-g
找到)结果表明没有为此包创建符号链接。我的NPM配置显示
bin links
选项正确设置为true

我还尝试使用相同的
package.json
语法在npmjs.com上发布一个示例公共包,并且我的命令在安装后全局可用。当我在GitLab NPM注册表上发布相同的包时,安装后找不到该命令

作为一种解决方法,我尝试将
scripts.postinstall
条目添加到我的
package.json
中,该条目本应为每个缺少的
bin
条目创建缺少的符号链接。但结果是,安装后脚本没有执行,而NPM文档则说明应该执行

所以,除了责怪GitLab NPM注册表本身,我已经没有想法了

似乎将GitLab NPM registry与NPM v7+一起使用会阻止执行
postinstall
钩子。只需降级NPM,即可从GitLab NPM注册表进行全局安装,以执行
postinstall
脚本,该脚本允许为每个
package.json.bin
条目创建符号链接

为了解决这个问题,我们已经降级到NPM
6.14.12
NPM安装-gnpm@6.14.12