试图在ubuntu 18.04上运行此命令
npm install -g pngquant-bin
但是我遇到了这个错误,
[..................] | fetchMetadata: sill resolveWithNewModule npm-conf@1.1.3 checking installable status
npm WARN deprecated gulp-util@3.0.8: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5
/root/.nvm/versions/node/v10.8.0/bin/pngquant -> /root/.nvm/versions/node/v10.8.0/lib/node_modules/pngquant-bin/cli.js
> pngquant-bin@5.0.0 postinstall /root/.nvm/versions/node/v10.8.0/lib/node_modules/pngquant-bin
> node lib/install.js
sh: 1: node: Permission denied
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! pngquant-bin@5.0.0 postinstall: `node lib/install.js`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the pngquant-bin@5.0.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-08-12T18_08_02_197Z-debug.log
您知道如何处理吗? 我尝试了在此articles中找到的所有解决方案,但没有成功。
答案 0 :(得分:16)
遇到相同的错误@Test(//throws some exception)
public void shouldThrowSomeException() {
Processor exThreadmock = mock(Processor.class);
when(exThreadmock.sendRequest(anyObject))
.thenThrow(SomeException.class)
Thread t = new Thread(exThread);
t.start()
}
这对我有用
sh: 1: node: Permission denied
答案 1 :(得分:3)
事实上,npm
不能使用 root
帐户安装任何东西。如果您使用 root
帐户,npm
将创建一个未经许可的帐户进行安装。在这种情况下,如果包需要执行 writeFile
或其他需要权限的操作,则会引发错误 node: Permission denied
。
所以,你可以在下面任意选择:
npm install
的高权限帐户答案 2 :(得分:2)
我让项目用户所有者使用chown(在USERID中)目录,并解决“权限被拒绝”问题:
sudo chown -R USERID.USERID *
答案 3 :(得分:1)
原始消息中的/root/.npm/...
日志路径显示您已经以root用户身份运行,并且(尽管其他人建议)我想这很可能是引起问题。
我作为根节点运行Node的经验(有限)是,大多数npm install
运行都花了很长的时间,但是由于显示的错误有所不同,因此失败了。我找到的唯一可靠的解决方案是在Ubuntu上完全不以root身份运行Node或npm。只需使用普通用户帐户下载并解压缩Node安装即可。
对于我来说,至少有一个以root用户身份运行的问题是因为某个依赖项npm install
脚本正在调用setuid
切换到特权较低的用户。由于某种原因,它选择了UID 500(Ubuntu不存在),因此失去了所有特权。因此,“权限被拒绝”错误是因为我以root用户身份运行; setuid
对普通用户不起作用。
我相信这与Error: setuid user id does not exist npm ERR! when npm install forever -g有关。
答案 4 :(得分:0)
您需要root用户权限,只需在命令前添加sudo
关键字并输入密码
sudo npm install -g pngquant-bin
答案 5 :(得分:0)
尝试在项目文件夹中安装节点
npm install node
答案 6 :(得分:-1)
此外(这可能对docker
很有用),您可以通过环境变量npm_config_user
全局覆盖此配置设置-例如:
ENV npm_config_user=root