npm 的一些问题

600 阅读1分钟

linux 下安装

node.js 官网下载 Linux64位安装包,上传到Linux

解压

tar -xvf node-v14.16.1-linux-x64.tar.xz

创建软连接

ln -s nodejs解压路径/bin/npm /usr/local/bin/npm

ln -s nodejs解压路径/bin/node /usr/local/bin/node

/usr/bin与/usr/local/bin的区别

首先注意usr 指 Unix System Resource,而不是User

然后通常:

/usr/bin下面的都是系统预装的可执行程序,会随着系统升级而改变。

/usr/local/bin目录是给用户放置自己的可执行程序的地方,推荐放在这里,不会被系统升级而覆盖同名文件。

如果两个目录下有相同的可执行程序,谁优先执行受到PATH环境变量的影响,比如我的一台服务器的PATH变量为。

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

这里/usr/local/bin优先于/usr/bin, 一般都是如此。

root用户 npm install

当你使用root执行npm install的时候,npm为了安全性考虑,将你的uid设置成nobody, nobody权限非常的低,因此postinstall里写的很多脚本nobody都没有权限执行,因此不会造成安全问题

虽然npm可以自动的帮助你在执行lifecycle script的时候降低权限到nobody, 但是如果你自己希望npm不要强制修改你的uid,你可以使用npm install --unsafe-perm

报错 Cannot find module ‘node-sass’

npm install 时 报错 Run npm rebuild node-sass to download the binding for your current environment

或者报错 Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime

基本都是npm install node-sass默认node-sass的版本不对

npm install node-sass@4.14.1

我这里需要的版本是 node-sass@4.x