Terser: prop.computed_key is not a function when using compress on a simple snippet

Created on 26 Aug 2020  路  3Comments  路  Source: terser/terser

Hi!
I recently updated webpack and therefore terser 4.8.0 -> 5.2.1 and was unable to build my bundle.
I managed to reproduce the same error using the terser cli and a very short snippet of code.
So here we go for the standard report:

Bug report or Feature request? Bug

Version (complete output of terser -V or specific git commit) terser 5.2.1

Complete CLI command or minify() options used terser --compress -- badfile.js

terser input

// badfile.js:
() => {
  let o = {聽...{} }
}

terser output or error

ERROR: prop.computed_key is not a function
at /path/to/folder/node_modules/terser/lib/compress/index.js:4262:56
at Array.some (<anonymous>)
at TreeTransformer.before (/path/to/folder/node_modules/terser/lib/compress/index.js:4262:38)
at AST_VarDef.transform (/path/to/folder/node_modules/terser/lib/transform.js:97:41)
at /path/to/folder/node_modules/terser/lib/transform.js:113:21
at doit (/path/to/folder/node_modules/terser/lib/utils/index.js:104:23)
at MAP (/path/to/folder/node_modules/terser/lib/utils/index.js:129:52)
at do_list (/path/to/folder/node_modules/terser/lib/transform.js:112:12)
at /path/to/folder/node_modules/terser/lib/transform.js:196:24
at AST_Let.transform (/path/to/folder/node_modules/terser/lib/transform.js:100:13)

Expected result
No error!

Thanks

Most helpful comment

hi! I just upgraded webpack 4.43.0 -> 4.44.1 and webpack-terser-plugin 3.0.6 -> 4.1.0 and i get a similar problem:

TypeError: prop.computed_key is not a function
at <Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:14354:56
at Array.some (<anonymous>)
at TreeTransformer.before (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:14354:38)
at AST_VarDef.transform (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:5224:41)
at <Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:5240:21
at doit (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:110:23)
at MAP (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:135:52)
at do_list (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:5239:12)
at <Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:5323:24
at AST_Var.transform (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:5227:13)

After downgrading webpack-terser-plugin to 3.0.8 the build passed.

All 3 comments

hi! I just upgraded webpack 4.43.0 -> 4.44.1 and webpack-terser-plugin 3.0.6 -> 4.1.0 and i get a similar problem:

TypeError: prop.computed_key is not a function
at <Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:14354:56
at Array.some (<anonymous>)
at TreeTransformer.before (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:14354:38)
at AST_VarDef.transform (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:5224:41)
at <Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:5240:21
at doit (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:110:23)
at MAP (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:135:52)
at do_list (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:5239:12)
at <Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:5323:24
at AST_Var.transform (<Path_to_project>\node_modules\terser-webpack-plugin\node_modules\terser\dist\bundle.min.js:5227:13)

After downgrading webpack-terser-plugin to 3.0.8 the build passed.

Am having the same issue using terser plugin for rollup -- downgrading to previous plugin version fixed the issue (the current version was just upgrading to terser v5).

Edit -- error message:

[!] (plugin terser) TypeError: prop.computed_key is not a function
TypeError: prop.computed_key is not a function
    at <project_path>/node_modules/terser/dist/bundle.min.js:14354:56
    at Array.some (<anonymous>)
    at TreeTransformer.before (<project_path>/node_modules/terser/dist/bundle.min.js:14354:38)
    at AST_VarDef.transform (<project_path>/node_modules/terser/dist/bundle.min.js:5224:41)
    at <project_path>/node_modules/terser/dist/bundle.min.js:5240:21
    at doit (<project_path>/node_modules/terser/dist/bundle.min.js:110:23)
    at MAP (<project_path>/node_modules/terser/dist/bundle.min.js:135:52)
    at do_list (<project_path>/node_modules/terser/dist/bundle.min.js:5239:12)
    at <project_path>/node_modules/terser/dist/bundle.min.js:5323:24
    at AST_Const.transform (<project_path>/node_modules/terser/dist/bundle.min.js:5227:13)

Thanks for bringing this up!

I've just pushed a fix which will be released tomorrow.

Was this page helpful?
0 / 5 - 0 ratings