约曼发电机启动非常慢

时间:2018-07-11 15:58:05

标签: yeoman

我创建了一个Yeoman生成器,该生成器过去对我来说非常灵活。最近,性能骤降到惊人的低点,每次我可以尝试一次简单的yo generator-name时,就需要等待多达五分钟。这使我的工作变得异常困难,并且在Yeoman问题委员会上似乎没有任何帮助。

我尝试打开冗长的Yeoman调试,等待了五分钟后,出现了第一条yeoman:generator语句。这就是我得到的:

> yo @my/generator:subgen tryNumberOne
  yeoman:generator Queueing initializing in initializing +0ms
  yeoman:generator Queueing prompting in prompting +4ms
  yeoman:generator Queueing writing in writing +0ms
  yeoman:generator Queueing end in end +0ms
  yeoman:generator Running initializing +4ms
Creating pure component file

- Initializing
  yeoman:generator Running prompting +4ms

最糟糕的是,我已经证实它可以在另一位团队成员的PC上正常工作。这非常快而且没有性能问题,所以问题不在于代码。

我唯一能想到的是Yeoman如何寻找对我机器的依赖关系,或者它试图通过网络查找某些东西并超时,然后正常运行,这是不对的。不幸的是,我无法检验我能看到的理论。

尝试使用节点检查器会严重中断:

node --inspect-brk C:\Progra~1\nodejs\yo -i @my/generator:subgen tryTwo

Debugger listening on ws://127.0.0.1:9229/b56a9400-57c0-407d-9fb8-a114b6c6df47
For help see https://nodejs.org/en/docs/inspector
Debugger attached.
C:\Users\myuser\AppData\Roaming\nvm\v8.11.3\yo:2
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
          ^^^^^^^

SyntaxError: missing ) after argument list
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:191:16)
    at bootstrap_node.js:612:3
Waiting for the debugger to disconnect...
^C

当然,在浏览器中无法使用以上ws://协议url。您必须将其更改为http://,然后添加/ json / list,然后从此处提取真实网址以在Chrome中打开调试器。即使这样,输出仍然是SyntaxError: missing ) after argument list

我什至可以只运行一个简单的yo命令,艰苦的等待仍然存在,所以即使发电机本身也不是问题。

有人知道这里发生了什么吗?

2 个答案:

答案 0 :(得分:0)

问题:https://github.com/yeoman/yo/issues/176

暂时解决方法,按照comment中的说明降级为"yo": "1.8.5"

其他要考虑的事情

  • 在本地安装yo

  • 直接使用yo脚本将npm指向生成器路径

在package.json中

"scripts": {
    "yo": "yo ./dist/yo-generator -- --no-insight"
},
"devDependencies": {
    "yo": "1.8.5"
}

然后您可以执行npm run yo,对我来说,这比使用全局yo命令还快。

答案 1 :(得分:0)

我一直对此进行监视,并且从2.0.5版开始解决了该问题。任何在此之前的任何版本有此问题的人都应尽快升级。

如果您由于某种原因无法升级,请坚持使用1.8.5,就像我在Yeoman问题委员会的评论中提到的那样。