angular-cli: Halting Problem at 95%. Shows emitting as the action doing.
I was hit by a problem like halting problem of truing machine while using the angular cli as follows. My script : node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build -e=prod --prod --sourcemap --vendor-chunk=true --build-optimizer
Versions
Angular CLI: 1.7.3
Node: 9.8.0
OS: win32 x64
Angular: 5.2.8
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, platform-server, router
@angular/cli: 1.7.3
@angular-devkit/build-optimizer: 0.3.2
@angular-devkit/core: 0.3.2
@angular-devkit/schematics: 0.3.2
@ngtools/json-schema: 1.2.0
@ngtools/webpack: 1.10.2
@schematics/angular: 0.3.2
@schematics/package-update: 0.3.2
typescript: 2.4.0
webpack-bundle-analyzer: 2.11.1
Repro steps
Use this script : node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build -e=prod --prod --sourcemap --vendor-chunk=true --build-optimizer --stats-json
- Apply the above script to any angular project.
- If we replace --scourcemap with --no-souecemap the problem will not comes.
Observed behavior
The program is running indefinitely.
Desired behavior
The program should halt to say if there is some error in the script.
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Reactions: 27
- Comments: 47 (10 by maintainers)
Commits related to this issue
- fix(@ngtools/webpack): don't add resource sourcemap to parent compilation Fix #9980 — committed to filipesilva/angular-cli by filipesilva 6 years ago
- fix(@ngtools/webpack): don't add resource sourcemap to parent compilation Fix #9980 — committed to angular/angular-cli by filipesilva 6 years ago
- fix(@ngtools/webpack): don't add resource sourcemap to parent compilation Fix #9980 — committed to angular/angular-cli by filipesilva 6 years ago
- Added source maps back after a long time it didn't work: https://github.com/angular/angular-cli/issues/9980 — committed to IsraelHikingMap/Site by HarelM 6 years ago
- fix(@ngtools/webpack): don't add resource sourcemap to parent compilation Fix #9980 — committed to ikjelle/angular-cli by filipesilva 6 years ago
In my case, the problem was solved by updating devkit package
ng update @angular-devkit/build-angular
Why is this issue closed? On Angular/CLI 6.1.1 the issue still occurs when I have optimization enabled @hansl ?
Turns out the reason my initial repro did not work was because the component CSS needed to have some content, not only exist.
So having some basic CSS on
src/app/app.component.css
like:On a starter project and running
ng build --aot --optimization --source-map
will always reproduce the problem.Changing that to a
.scss
file like @hahn-kev mentioned will make the bug go away.So now we know that it’s definitely related to CSS files specifically and content is needed to reproduce.
any solution for 95% emitting CopyPlugin (version 7)
On webpack
Compiler.js
, methodemitAssets()
, a badly formed directory name is passed (the drive letter included twice) tomkdirp
. It hangs because of [0]. It looks like it’s an issue only on Windows.Indeed the source maps for the
styleUrls
. Unlike the js files, these css files are referenced by the full path. I guess previously they weren’t generated. I’m not sure exactly what to make of those, but extracting a relative path might help. I’m curious how is the output on non-Windows platforms.I’d say it’s okay to not generate .css.map for production builds. I don’t think they are useful.
@filipesilva how to proceed with this fix? This is a show stopper for v6.x for Windows users.
Refs: [0] https://github.com/substack/node-mkdirp/pull/125
I am experiencing this too with 1.7.3 on Windows 10. Build finishes normally if I remove --sourcemaps from parameters.
@awerlang I couldn’t reproduce using a project I had around, but could reproduce following your steps.
I was able to track down the precise flags to
ng build --aot --optimization --source-map
. It happens on the latest stable version and also on rc.1 (@angular-devkit/build-angular@0.7.0-rc.1
and@angular/cli@6.1.0-rc.1
).Following your hint of looking inside the
node_modules/lib/Compiler.js
and theemitFiles
function (line 255), loggingtargetFile
didn’t show me a badly formatted path but did show a absolute path:Between projects that built, and projects that did not built, the difference seemed to be that absolute path.
Investigating further, it seems like this problem happens only for component css, when our internal
CleanCssWebpackPlugin
is used with sourcemap support, and only on some installs. It doesn’t happen on a brand new project, but seems to happen on a updated project.I haven’t been able to track down which dependency is it that causes this. Comparing the dependency trees between a new project and a project that exhibits the bug didn’t show anything relevant… except maybe that in a bugged project I saw
postcss-import@11.1.0
usingresolve@1.8.1
, and in a non-bugged project it was usingresolve@1.1.7
.I pushed up a repro that exhibits this behaviour at https://github.com/filipesilva/angular-cli-9980. I used node 8.11.0 and npm 6.1.0 to install the dependencies.
Still looking further into this problem.
still happens in version 7 stuck on 95% emitting CopyPlugin
I have a project that started out using CSS and I switched to SCSS after a while. I’ve been having the halting problem. After reading your summary I checked to see if I have any CSS files still in use. After converting all my CSS files to SCSS the build started working again with source maps on.
So I can confirm that the issue is directly related to CSS files.
I find out that the problem happens when I try to build with parameter - - output-path
I’m avoiding the problem by running NG config set output-path before build
Same issue. This is not first time when you get information about problem and it meet’s with zero reaction from your side.
same here in 6rc6 infite :
95% emitting index-html-webpack-plugin
with this config:same problem if I set
buildOptimizer
to false!ps: it working when set
optimization
to false 95% step if finish in 1 second(version : nodejs10, npm6, win64, angular6rc5, cli6rc6)
cc @clydin
I am able to reproduce the same with 6.2.1
@filipesilva Thanks for answering. This can be easily reproduced on Windows using quickstart: https://angular.io/generated/zips/cli-quickstart/cli-quickstart.zip
npm i
ng build --prod --source-map
Does anyone have a simple repro I can look at for this issue?
@awerlang you seem to have a very good idea of the problem. I think I know the general situation where a badly formatted directory name can be passed inside the CLI setup. If you can put together a simple repro that exhibits this behaviour maybe I can track it down.
The problem with configuring the output directory in the angular.json file is that the computer running the build is dynamic, in some builds the output directory is x:[variable folder2]\artifact in others it is D:[variable folder1]\artifact
I solved by running this sequence:
Our prod build runs as long as we’re not using maps, so while it’s not a breaking issue it is a serious qol issue. +1