例如,我刚刚向预先包含的App.vue添加了一些
<template>
<div id="app">
<img src="./assets/logo.png">
<div><div><div><div></div></div></div></div>
<HelloWorld/>
</div>
</template>
希望这不需要太长时间。
但是一旦它得到了这个:
<template>
<div id="app">
<img src="./assets/logo.png">
<div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
<HelloWorld/>
</div>
</template>
那么,构建过程需要很长时间,我认为这种深度的嵌套并不罕见。
我应该如何解决这个问题?
编辑(细节)
看起来问题可能是与环境有关的,所以这里提供详细信息。
这个问题至少可以在以下环境中复制:
- Mac mini(2014 年底款)上的 macOS High Sierra
- Dell XPS 13 上的 Ubuntu 18.04
node 和 npm 的版本为:
node --version
# prints
v8.9.4
# and
npm version
# prints
{ npm: '6.1.0',
ares: '1.10.1-DEV',
cldr: '31.0.1',
http_parser: '2.7.0',
icu: '59.1',
modules: '57',
nghttp2: '1.25.0',
node: '8.9.4',
openssl: '1.0.2n',
tz: '2017b',
unicode: '9.0',
uv: '1.15.0',
v8: '6.1.534.50',
zlib: '1.2.11' }
我用这些东西在我的Mac上重新尝试了以下操作:
npm uninstall -g vue-cli
npm install -g vue-cli
vue init webpack divnest
# then some Enter keys - everything is default
cd divnest
接下来,打开 App.vue
文件并添加多个 div:
<template>
<div id="app">
<img src="./assets/logo.png">
<div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
<router-view/>
</div>
</template>
由于我在这里使用了默认设置,因此包括<router-view/>
,与原始帖子不同,但不应该是问题所在。
最后,
npm run dev
这个过程需要很长时间,特别是在这一点上停止:
13% building modules 28/31 modules 3 active ...myname/Documents/divnest/src/App.vue
在这种情况下
npm run build
在这一点上,该进程停止:
> divnest@1.0.0 build /Users/myname/Documents/divnest
> node build/build.js
Hash: 483ebabc54d5aed79fd7
Version: webpack 3.12.0
Time: 13742ms
Asset Size Chunks Chunk Names
static/js/vendor.7fed9fa7b7ba482410b7.js 112 kB 0 [emitted] vendor
static/js/app.f1ebca7a6e0ec0b7ebdf.js 12 kB 1 [emitted] app
static/js/manifest.2ae2e69a05c33dfc65f8.js 857 bytes 2 [emitted] manifest
static/css/app.30790115300ab27614ce176899523b62.css 432 bytes 1 [emitted] app
static/css/app.30790115300ab27614ce176899523b62.css.map 828 bytes [emitted]
static/js/vendor.7fed9fa7b7ba482410b7.js.map 553 kB 0 [emitted] vendor
static/js/app.f1ebca7a6e0ec0b7ebdf.js.map 23.3 kB 1 [emitted] app
static/js/manifest.2ae2e69a05c33dfc65f8.js.map 4.97 kB 2 [emitted] manifest
index.html 509 bytes [emitted]
Build complete.
Tip: built files are meant to be served over an HTTP server.
Opening index.html over file:// won't work.
94% asset optimization
如果我不干预,它需要...1155409毫秒!!!
DONE Compiled successfully in 1155409ms 13:35:34
I Your application is running here: http://localhost:8080
更多编辑
正如@tony19所指出的那样,prettier很可能是罪魁祸首。按照建议,我在Ubuntu 18.04上尝试了一些模式(不是Mac,因为现在没有Mac,抱歉),我的结果是:
- vue-cli 2.9.6 +
npm run dev
- 卡住了 - vue-cli 2.9.6 +
npm run build
- 6秒钟(这太令人困惑了。上面的100万秒是什么意思?也许重新安装vue-cli有所改变?) - vue-cli 3.0.0-beta16 +
vue serve
- 卡住了(与@tony19的报告相反) - vue-cli 3.0.0-beta16 +
vue build
- 5秒钟
更多编辑
因此,这显然是由prettier引起的。 https://github.com/prettier/prettier/issues/1250 是最初解决这个问题的问题,并且开发团队认为https://github.com/prettier/prettier/pull/2259修复了它,但事实上它无法处理我的情况,正如@tony19在https://github.com/prettier/prettier/issues/4672上所展示的那样。哦好吧。
"解决方案"
最终我做了这个-按照@tony19的报告,更改/node_modules/vue-loader/lib/template-compiler/index.js
的第78:81行。
if (!isProduction) {
code = prettier.format(code, { semi: false })
}
为了
// if (!isProduction) {
// code = prettier.format(code, { semi: false })
// }
问题已经解决。感谢前端,谢谢您。