Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

quote_keys: true may cause compilation errors #1500

Closed
mirages opened this issue Mar 4, 2024 · 1 comment
Closed

quote_keys: true may cause compilation errors #1500

mirages opened this issue Mar 4, 2024 · 1 comment
Labels

Comments

@mirages
Copy link

mirages commented Mar 4, 2024

Bug report

quote_keys: true configuration cause some error when i used with terser-webpack-plugin. The error info likes below.

Version (complete output of terser -V or specific git commit)
terser@5.27.0
Complete CLI command or minify() options used

{
  keep_fnames: true,
  output: {
    comments: false,
    keep_quoted_props: true,
    quote_keys: true,
    beautify: false
  },
  warnings: false,
  module: false,
  ecma: 5
}

terser input

terser output or error

TypeError: str.replace is not a function
    at make_string (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9132:19)
    at encode_string (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9176:19)
    at Object.print_string (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9641:27)
    at print_property_name (/Users/xxxx/node_modules/terser/dist/bundle.min.js:10880:20)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10941:17
    at doit (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9699:13)
    at AST_ObjectKeyVal.<anonymous> (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9706:13)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10828:22
    at Array.forEach (<anonymous>)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10822:29
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:9398:19
    at OutputStream.with_indent (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9363:38)
    at Object.with_block (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9397:9)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10821:48
    at doit (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9699:13)
    at AST_Object.<anonymous> (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9706:13)
    at parenthesize_for_noin (/Users/xxxx/node_modules/terser/dist/bundle.min.js:10648:14)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10659:13
    at doit (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9699:13)
    at AST_VarDef.<anonymous> (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9706:13)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10467:17
    at Array.forEach (<anonymous>)
    at AST_Const._do_print (/Users/xxxx/node_modules/terser/dist/bundle.min.js:10465:26)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10482:14
    at doit (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9699:13)
    at AST_Const.<anonymous> (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9706:13)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10019:22
    at Array.forEach (<anonymous>)
    at display_body (/Users/xxxx/node_modules/terser/dist/bundle.min.js:10010:14)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10067:17
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:9398:19
    at OutputStream.with_indent (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9363:38)
    at Object.with_block (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9397:9)
    at print_braced (/Users/xxxx/node_modules/terser/dist/bundle.min.js:10066:20)
    at AST_Function._do_print (/Users/xxxx/node_modules/terser/dist/bundle.min.js:10185:9)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10188:14
    at doit (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9699:13)
    at AST_Function.<anonymous> (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9706:13)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10948:24
    at doit (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9699:13)
    at AST_ObjectKeyVal.<anonymous> (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9706:13)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10828:22
    at Array.forEach (<anonymous>)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10822:29
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:9398:19
    at OutputStream.with_indent (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9363:38)
    at Object.with_block (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9397:9)
    at /Users/xxxx/node_modules/terser/dist/bundle.min.js:10821:48
    at doit (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9699:13)
    at AST_Object.<anonymous> (/Users/xxxx/node_modules/terser/dist/bundle.min.js:9706:13)

Expected result
Should minify successfully

@fabiosantoscode
Copy link
Collaborator

Thanks for reporting! It looks like an issue in computed_props

Minimal reproduction:

{
  output: { quote_keys: true },
  compress: { defaults: false, computed_props: true },
}
({ [11]: 1 })
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2 participants