我正在使用 gcloud
Nodejs 模块。每当我进行更改时,nodeJS 都会重新加载(使用 nodemon)并且它必须加载所有依赖项。一切都很快,除了 gcloud
。仅加载该模块需要相当长的时间(例如 10-20 秒)。
我所做的就是:
console.log('Loading gCloud Module');
var gcloud = require('gcloud');
console.log('Done.');
这是为什么呢?我正在运行 NodeJs 4.1.1。 gcloud - 0.21.0。
最佳答案
我用以下代码尝试了这一点:
> node
console.time(); require('gcloud'); console.timeEnd();
我第一次运行它时,花了将近 10 秒。之后每次,我都会得到大约 900ms-2.5s 的时间。我尝试了各种 gcloud 版本以及 Node 版本,并收到了细微的差异。
我开始深入研究哪些特定的依赖项花费了最多的时间。我发现了各种线索:google-auto-auth
大约需要 375 毫秒。但实际上,这是一种依赖; google-auth-library-nodejs
占用了 370 毫秒的时间。因此我深入研究并发现其依赖项 gtoken
大约需要 366 毫秒。 其依赖项之一 node-forge
需要 120 毫秒,而另一个依赖项则占用了大部分时间。
基本上,由于 gcloud 有如此多的依赖项,它必须解决许多同步require
,这意味着遍历文件系统并始终阻塞。如果不进行模块化,对于其规模和范围的库,我不确定可以做什么来对启动时间产生巨大的影响。
运行 npm dedupe
可能会产生微小的差异。
如果您始终看到 10-20 秒,那就很有趣。您能否分享有关脚本运行系统的更多信息?您可以尝试升级到最新的 gcloud (0.23) 吗?
关于node.js - gcloud 模块加载缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897794/