nodejs 80端口监听失败及NODE_PATH不起作用的问题
nodejs做web服务器,打开80时报错:
Error: listen EACCES 0.0.0.0:80
80端口监听失败,是因为1024以下的端口需要root权限,需要sudo或su之后执行。但这又带来了NODE_PATH无效、权限等其他问题。权限问题通过chmod可解决。
NODE_PATH无效,会导致通过-g全局安装的模块引用不了。需要在profile中配置:
export NODE_PATH="/usr/local/lib/node_modules"
profile有几个:
在/etc/profile配置的,可以对任意用户登陆有效,但sudo执行时无效(解决方法在后面)。
在~/.bash_profile中配置的,只对当前用户有效。
在/var/root/.bash_profile配置的,对su之后对root用户有效。
用node-inspector调试nodejs加载模块过程,如下:
当前用户执行nodejs(1024以上的端口),require时会扫描这些目录:
/apps/server/node_modules
/apps/node_modules
/node_modules
/usr/local/lib/node_modules
/Users/hz/.node_modules
/Users/hz/.node_libraries
/usr/local/lib/node
su之后执行nodejs,require时会扫描这些目录:
/apps/server/node_modules
/apps/node_modules
/node_modules
/usr/local/lib/node_modules
/var/root/.node_modules
/var/root/.node_libraries
/usr/local/lib/node
sudo执行nodejs,require时会扫描这些目录:
/apps/server/node_modules
/apps/node_modules
/node_modules
/Users/hz/.node_modules
/Users/hz/.node_libraries
/usr/local/lib/node
没有扫描/usr/local/lib/node_modules这个目录,原因是NODE_PATH变量没起作用。
后来发现修改/private/etc/sudoers文件,把
Defaults env_reset
改为
Defaults !env_reset
可以解决这个问题。
nodejs 80端口监听失败及NODE_PATH不起作用的问题的更多相关文章
- Nginx配置IPv6端口监听及务器设置IPV6及Https支持并通过AppStore审核
一.监听端口 从Nginx 1.3的某个版本起,默认ipv6only是打开的,所以,我们只需要在监听中加入ipv6监听即可,不过推荐都手动加上比较好,代码如下: listen [::]: ipv6on ...
- 多进程端口监听 How nginx processes a request Server names
网络编程( 六):端口那些事儿 - 知乎专栏 https://zhuanlan.zhihu.com/p/20365900 不停服务reload.restart 多进程端口监听 我们都有一个计算机网络 ...
- asp.net core 多端口监听&日志服务
1 配置多个端口监听 HostingAbstractionsWebHostBuilderExtensions. public static IWebHostBuilder UseUrls(this I ...
- swoole多端口监听
今天测试swoole写webserver实现多端口监听.记录下爬过的坑:关于tcp协议监听触发不到receive!!!!! 首先上服务端代码 class Http { /** * 服务实例 * @va ...
- netty同端口监听tcp和websocket协议
前言: 软件通信七层结构(osi模型)中由协议套协议最终组成最高级应用层协议(http等等),下三层结构偏向与数据通信,上三层更偏向于数据处理,中间的传输层则是连接上三层与下三层之间的桥梁,每一层都做 ...
- 获取运行端口监听的用户身份auth-owner
获取运行端口监听的用户身份auth-owner Windows系统提供工作在TCP 113端口的授权服务(Authentication Service),用来判断TCP连接的用户.Nmap的aut ...
- 利用 netsh 给 mysql 开启多端口监听
利用 netsh 给 mysql 开启多端口监听 标题党,实际并不是真的多端口监听,只是端口转发而已. 由于某种特殊原因需要 mysql 服务器多个端口监听. mysql 服务器本身是不支持的,但可以 ...
- ZooKeeper(二):多个端口监听的建立逻辑解析
ZooKeeper 作为优秀的分布系统协调组件,值得一探究竟.它的启动类主要为: 1. 单机版的zk 使用 ZooKeeperServerMain 2. 集群版的zk 使用 QuorumPeerMai ...
- Apache多端口监听
打开:config/httpd.conf 找到Listen 80 在下面增加你要监听的端口,修改后如下: Listen 80 Listen 81 重启apache服务器
随机推荐
- 余数 2015广工校赛 C 魔幻任务
题目传送门 题意:问n位最小能整除47的数字 分析:打表发现前面都是100000...,后两位就是100000%47后到47的距离,就是快速幂求1000000%47的值,47-它就是后两位 #incl ...
- three.js光源
在Threejs中,光源用Light表示,它是所有光源的基类.它的构造函数是: THREE.Light ( hex ) 它有一个参数hex,接受一个16进制的颜色值.例如要定义一种红色的光源,我们可以 ...
- HDU4871 Shortest-path tree(最短路径树 + 树的点分治)
题目大概要先求一张边有权的图的根为1的最短路径树,要满足根到各点路径序列的字典序最小:然后求这棵最短路径树包含k个结点的最长路径的长度和个数. 首先先构造出这棵字典序最小的最短路径树..好吧,我太傻逼 ...
- myeclipse操作记录
myeclipse里面jsp页面里面js注释快捷键 ctrl + shift +cctrl + / MyEclipse 每次保存都要building workspace的解决方法 方法一:菜单栏-&g ...
- BZOJ3934 : [CQOI2015]标识设计
轮廓线插头DP. 设$f[i][j][a][b][c][d][e]$表示考虑到了$(i,j)$,轮廓线上3个下插头的位置分别为$a,b,c$,是否有右插头,已经放了$e$个$L$的方案数. 然后直接D ...
- Squid的简单使用
1. squid配置 # Squid normally listens to port http_port hosts_file /etc/hosts cache_access_log /var/lo ...
- Spring AOP报错处理 Can not set field to $Proxy 在spring中使用事物或AOP遇到的错误
[转] 解决方法: http://forum.springsource.org/showthread.php?85016-IllegalArgumentException-with-Applicati ...
- Codeforces Round #252 (Div. 2) B. Valera and Fruits
#include <iostream> #include <vector> #include <algorithm> #include <map> us ...
- Java_关于App class loader的总结
Java本身是一种设计的非常简单,非常精巧的语言,所以Java背后的原理也很简单,归结起来就是两点: 1.JVM的内存管理 理解了这一点,所有和对象相关的问题统统都能解决 2.JVM Class Lo ...
- GridView合并表头、多重表头(转)
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { switch (e.Row.RowType) ...