如果有人使用了阿里雲的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