【问题标题】:Yeoman generator startup extremely slowYeoman 发电机启动极慢
【发布时间】:2018-07-11 15:58:04
【问题描述】:

我创建了一个 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,然后从那里拉出真正的 url 以在 Chrome 中打开调试器。即使这样,输出仍然是SyntaxError: missing ) after argument list

我什至可以只运行一个简单的yo 命令,并且仍然需要等待,所以即使是生成器本身也不是问题。

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

【问题讨论】:

  • 这仍然是一个问题,即使在卸载与 node.js 相关的所有内容并使用 Yarn 全局重新安装 v8.11.3 和 Yeoman 2.0.2 之后也是如此。我还设法在同事的 Windows 笔记本电脑上重现了同样的问题。无论谁否决了这个问题,都没有留下任何理由。为什么模组在这里允许这种行为?
  • 如果我的回答令人满意,请告诉我,谢谢
  • 该问题已在 2.0.5 中解决。

标签: yeoman


【解决方案1】:

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

目前的解决方法,降级到"yo": "1.8.5",如comment 中所述。

其他需要考虑的事项

  • 在本地安装yo

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

在你的 package.json 中

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

那么你可以使用npm run yo,对我来说这也比使用全局yo 命令更快。

【讨论】:

    【解决方案2】:

    我一直在关注这个问题,从 2.0.5 版开始,该问题已得到解决。在此之前的任何版本中遇到此问题的任何人都应尽快升级。

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

    【讨论】:

      猜你喜欢
      • 2014-08-07
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多