一,eclipse安装nodejs和chromedevtools插件即可调试,插件的安装配置上一篇中已经说明。
(1)要想调试,启动node服务时需要加个参数:
命令行模式:
node --debug xxx.js
node --debug=0000 xxx.js
eclipse模式:
这是开启调试端口,不指定,默认端口是5858
二、远程调试(非本地调试)
我们的NODE工程由于用到了连接mysql用的mysql-libmysqlclient 包,这个包中有c程序,在windows运行比较困难,于是我们的工程只能在linux上运行。(为了便于开发,我们将linux上的node工程目录共享给windows,这样就可以在windows上修改代码,linux上运行了。
共享需要在linux上安装 samba ,这里不介绍了。)
此时的问题是用eclipse远程调试linux上的代码,无法连接:
Failed to connect to Standalone V8 VM
Failed to get version
解决办法
第一种是远程机编译之前修改nodejs源码,修改deps/v8/src/platform_posix.cc 文件中的Socket::Bind 方法:
boolPOSIXSocket::Bind(const int port) {
if (!IsValid()) {
return false;
}
sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
addr.sin_port = htons(port);
int status = bind(socket_,
BitCast<struct sockaddr*>(&addr),
sizeof(addr));
return status == 0;
}
红色的改成 INADDR_ANY,之后用修改好的nodejs源码在linux上安装。
第二种:远程机的127.0.0.1 5858 映射到其他端口,这里也不详述了。
第一种没有试验过,第二种使用中,可以成功调试。
ps: 在eclipse中启动nodejs(使用了supervisor) 之后,关闭服务不起作用,需要手动结束node进程。
三、自动部署(重启node)
安装 supervisor ,g 是安装成全局变量
npm install -g supervisor
不使用 node xxx.js启动node工程 ,而是:
supervisor xxx.js