发布于 4年前

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

©2020 edoou.com   京ICP备16001874号-3