【開發小技巧】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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章