mac osx10.8 npm -g 安装的包用sudo执行后就出现cannot find module
发布于 11 年前 作者 jridea 5516 次浏览 最后一次编辑是 8 年前

mac osx 10.8的系统 用npm -g 安装的包直接执行node app.js 能找到, 如果用sudo node app.js 就显示connot find module NODE_PATH已添加,不知道还有什么没设置的吗 跪求大牛们帮助

11 回复
node -e "console.log(process.env)"
sudo node -e "console.log(process.env)"

两个命令跑的结果也不一样, 的确没有 NODE_PATH, 不知道为什么

sudo is root role , no sudo is current user.


签名: 交流群244728015 《Node.js 服务器框架开发实战》 http://url.cn/Pn07N3

但是 sudo -s 以后, 再打印环境变量, NODE_PATH 是正确的, 这就奇怪了.

NODE_PATH just only one.


签名: 交流群244728015 《Node.js 服务器框架开发实战》 http://url.cn/Pn07N3

那需要怎么设置呢

将你的 node的环境变量 配置到 /etc/profile文件里

然后 source /etc/profile

这样su下可以运行了 但是用sudo node app.js还是报connot find module…

-s

执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell -H

将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )

你试试加上 -H参数执行下

sudo -H -u 你自己的用户 node -e “console.log(process.env)”

这里面涉及到两个问题: 1 node的包寻找路径 2 sudo命令 会暂时改变你的使用者家目录

我手头没机器,晚上回去给你试试

sudo -H -u 你自己的用户 node -e “console.log(process.env)”

这个命令会让你 以root执行但用户文件为你指定的用户,应该可以解决你的问题

回到顶部