Windows环境下配有Node.js 性能平台(alinode)的项目开发频繁报错
如果有人使用了阿里云的Node.js 性能平台,这个项目会在不同的开发环境下有不同的效果。比如,我在egg.js项目中有用到这个阿里云的Node.js性能监控,我在项目中配好了各项参数,在监控里也是可以看到当前活跃项目的一些性能状态。
然而,有一些情况你是无法查看的。比如,Windows!Windows!Windows!因为这个阿里云的在线监控服务账号不是我的也不是我开的。。。所以最早完全没有想到,这个是不支持Windows的,而我的开发环境既有MacOSX也有Windows,起初没注意到,只发现好像有时候本地开发会报错。报错内容大致如下:
2018-12-13 10:37:18,344 ERROR 16276 nodejs.ENOENTError: spawn D:\webs\project\node_modules\commandx\get_processes_count ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:232:19)
at onErrorNT (internal/child_process.js:407:16)
at process._tickCallback (internal/process/next_tick.js:63:19)
errno: "ENOENT"
code: "ENOENT"
syscall: "spawn D:\\webs\\project\\node_modules\\commandx\\get_processes_count"
path: "D:\\webs\\project\\node_modules\\commandx\\get_processes_count"
spawnargs: ["node"]
大约每过一分钟报错一次。
百度不到原因。。。谷歌不到原因。。。找了很久才发现,原来性能监控不支持Windows系统。官方文档为啥没写。。。还是我没看到。。。文档:nodejs-性能平台alinode,难道性能监控只支持Linux或者OSX这类系统是基本常识吗- -。如果是的,那好吧。。。
解决方案
那么既然知道了Windows下不支持这个监控,我这就十分有必要在egg.js中的alinode
配置修改为enable: false
了,大致如下:
exports.alinode = {
enable: false,
server: 'wss://agentserver.node.aliyun.com:8080',
appid: '66666',
secret: 'itisasecrectsoicannottellyougays',
};
但是,项目维护要适应不同环境。。。总不能一不小心提交到正式环境,就关了监控吧。于是解决方案有二:
- 修改git忽略列表,不提交该文件,使本地和正式线不一致。(不推荐)
-
修改配置如下:
exports.alinode = { enable: process.platform !== 'win32', server: 'wss://agentserver.node.aliyun.com:8080', appid: '66666', secret: 'itisasecrectsoicannottellyougays', };
其实一般项目都是运行在linux主机上的,所以这行process.platform !== 'win32'
真的仅限于本地开发了。如果有朋友遇到这种情况不妨试试这样修改配置哦~
Node.js API: process.platform