Angular-cli: ng build --prod: Cannot read property '_walk' of null

Created on 30 Sep 2018  路  22Comments  路  Source: angular/angular-cli

Bug Report or Feature Request (mark with an x)

- [x] bug report -> please search issues before submitting
- [ ] feature request

Command (mark with an x)

- [ ] new
- [x] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [ ] update
- [ ] lint
- [ ] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc

Versions

Node: v8.11.1
NPM: 6.4.1

Angular CLI: 6.2.3
Node: 8.11.1
OS: win32 x64
Angular: 6.1.9
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package Version

@angular-devkit/architect 0.8.3
@angular-devkit/build-angular 0.8.3
@angular-devkit/build-optimizer 0.8.3
@angular-devkit/build-webpack 0.8.3
@angular-devkit/core 0.8.3
@angular-devkit/schematics 0.8.3
@angular/cli 6.2.3
@ngtools/webpack 6.2.3
@schematics/angular 0.8.3
@schematics/update 0.8.3
rxjs 6.3.3
typescript 2.7.2
webpack 4.20.2

Windows 10

Repro steps

execute "ng build --prod" -> sorry, I can't provide the repo.

This bug suddenly popped up on our build server two days ago. Before that, this problem never occurred. After cleaning node_moduls and npm install I can reproduce the error on my machine too.

The log given by the failure

`Date: 2018-09-28T18:28:46.879Z
Hash: 2fa0d73885177ad3220b
Time: 109957ms
chunk {0} runtime.ec2944dd8b20ec099bf3.js (runtime) 1.44 kB [entry] [rendered]
chunk {1} main.85d86102e68c1db8c7c4.js (main) 8.08 MB [initial] [rendered]
chunk {2} polyfills.c2c353082061f41763b0.js (polyfills) 98.3 kB [initial] [rendered]
chunk {3} styles.c5267d72f9cea9ab11f3.css (styles) 150 kB [initial] [rendered]

ERROR in main.85d86102e68c1db8c7c4.js from UglifyJs
TypeError: Cannot read property '_walk' of null
at AST_Dot.eval (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :1112:29)
at TreeWalker._visit (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :1513:21)
at AST_Dot._walk (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :1111:24)
at AST_VarDef.eval (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :1058:40)
at TreeWalker._visit (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :1513:21)
at AST_VarDef._walk (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :1056:24)
at AST_Var.eval (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :966:32)
at TreeWalker._visit (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :1513:21)
at AST_Var._walk (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :963:24)
at walk_body (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :513:17)
at AST_Function.eval (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :739:13)
at TreeWalker._visit (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :1513:21)
at AST_Function._walk (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :733:24)
at AST_Function.walk (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :467:21)
at get_lvalues (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :8804:34)
at collapse (eval at (E:\jenkins\ProjectX\workspace\node_modules\uglifyjs-webpack-plugin\node_modules\uglify-es\tools\node.js:21:1), :8565:35)
Build step 'Execute Windows batch command' marked build as failure
[TASKS] Skipping publisher since build result is FAILURE
Skipped archiving because build is not successful`

Desired functionality

Build optimization with uglifyjs works as before

Mention any other details that might be useful

Similar errors are filed for ember-cli: https://github.com/ember-cli/ember-cli/issues/8075

blocked devkibuild-angular medium regression bufix

Most helpful comment

If your project have a dependency tether, Try downgrade the version to 1.4.3.

https://github.com/HubSpot/tether/issues/291

All 22 comments

The error comes from the uglify-js package. With uglifyjs 3.3.4 it works as expected. The error "Cannot read property '_walk' of null" occours starting from version 3.3.5.

+1 same issue

were you guys able to resolve the issue? what was the fix?

uglify-js is part of cli transitive dependency, when you do npm install, it will grab uglify-js 3.39 in my case. how can i override the dependency in package.json? or downgrade the version?

if using yarn, using the resolutions field within package.json would allow you to do that.

Also, CLI 7.0 (currently in release candidate stage) uses a new variant of uglify-es named terser which should alleviate the issues being faced here.

fixed the issue by changing the ES lib version in tsconfig.json file. it was es2017, changed to es2015 { "compileOnSave": false, "compilerOptions": { "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es5", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2015", "dom" ] } }

If your project have a dependency tether, Try downgrade the version to 1.4.3.

https://github.com/HubSpot/tether/issues/291

Thank you @DingWeizhe ! I'm on that bug since yesterday !

Heya just wanted to mention we are aware of this issue, and waiting for a resolution in https://github.com/terser-js/terser/issues/120. Then we'll update the version we use of terser (the uglifier in our pipeline).

I fixed the issue the same as @DingWeizhe - downgraded tether. Just went through all my dependencies and checked which had the latest release, and tried the last version

also did npm update, @angular/compiler-cli version was updated, and it fixed the issue permanently.

@seanzhu0925 I updating everything, I can't fix this issue with @angular/compiler-cli.
Could someone describe in details how to avoid this issue during ng build --prod? (not locally but on CI server)?
This is blocking issue for me. I can't deploy application.

This issue is now fixed in [email protected]. Angular CLI does not depend on terser directly, but you can force it to update by following these steps:

  • check the current installed version of terser: npm ls terser
  • install and uninstall terser to update your lockfile npm install [email protected] npm uninstall terser
  • you should now see the latest terser in npm ls terser

@seanzhu0925 I updating everything, I can't fix this issue with @angular/compiler-cli.
Could someone describe in details how to avoid this issue during ng build --prod? (not locally but on CI server)?
This is blocking issue for me. I can't deploy application.

@inpicksys - my issue was that @angular-devkit/build-angular was not updated with ng update and I missed this, so I was still not using terser.

We are using Angular4 and this issue also effects our production build. How do I install terser so that Angular uses it instead of uglifyJS?

The weird thing is that we have not updated our dependencies.

@Sijoma you'll need to be using at least Angular CLI 7 for the build system to be using Terser.

@Sijoma you'll need to be using at least Angular CLI 7 for the build system to be using Terser.

Okay, we currently have stick with Angular 4, do you have any suggestions on how to fix the issue there?

You can try using Angular 4 with Angular CLI 7. It's not something we test for but might work. Other than that.. maybe we you can using Yarn to always resolve the uglify-js package to a version that doesn't exhibit this bug.

Hard to say at this point, it looks like the packages you are using are somewhat outdated. I really do encourage you to use a lockfile though, either through npm or yarn. Without it, your dependencies can change even if you don't update anything.

Thanks filipesilva, I found an older lockfile and managed to use that. Just FYI Building with the CLI Version 7 did not work.

I immediately removed the lockfile from the gitignore and committed it 馃槄.

https://github.com/terser-js/terser#replacing-uglify-es-with-terser-in-a-project-using-yarn

This is back.

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

_This action has been performed automatically by a bot._

Was this page helpful?
0 / 5 - 0 ratings