【问题标题】:I'm getting an error when trying to use 'const' in my userscript with Opera尝试在我的用户脚本中使用 'const' 和 Opera 时出现错误
【发布时间】:2021-01-03 03:07:46
【问题描述】:

我可以在 Tampermonkey 中使用最新版本的 Chrome、Firefox 和 Edge (Chromium),它们都支持在我的用户脚本中使用 const。但是,对于带有 Tampermonkey 4.11.6120 的 Opera 73.0.3856.284,我收到错误消息“eslint: null - Parsing error: The keyword 'const' is reserved”。虽然我知道我可以使用varlet,但我想知道是否存在导致此错误的特定原因。我的用户脚本旨在跨浏览器,我希望是否有办法使用 const 而不会出现此错误。下面的图片只是一个用户脚本,我只用 const 来显示错误:

编辑:我用这段代码运行了一个测试用户脚本:

const x = 2;
alert(x);

警报给出了 2。因此,我怀疑代码运行良好,但这是 Tampermonkey 的内部错误。事实上,我刚看到这个问题,我坚信是这样的:https://github.com/Tampermonkey/tampermonkey/issues/1099

【问题讨论】:

    标签: javascript syntax constants opera userscripts


    【解决方案1】:

    您看到的只是 Tampermonkey 提供的浏览器内编辑器的 linting 错误,而不是 JavaScript 运行时错误。您的脚本应该在现代版本的 Opera 中运行良好;您可以放心地忽略该警告。

    如果您不喜欢警告的外观,您可以使用外部脚本编辑器,例如,使用:

    // @require          file://C:/PATH_TO_FILE.user.js
    

    在元数据块中,元数据块后面没有内容。将代码写在PATH_TO_FILE.user.js 中。

    如果尚未报告,您也可以在 Tampermonkey 的 github 上提出问题,要求修复浏览器内编辑器。

    【讨论】:

      【解决方案2】:

      ESLint 设置为旧的 ECMAScript,尽管在 Firefox 上安装默认 TamperMonkey 4.11.6120 时我没有收到该错误。
      它可能特定于 Opera 安装。

      TamperMonkey → 设置 → 自定义 Linter 配置

      参考:Configuring ESLint

      {
          "parserOptions": {
              "ecmaVersion": 6
          }
      }
      

      以前...eslint: error Parsing error: The keyword 'const' is reserved

      更新:CertainPerformance 的评论

      似乎 Opera 安装存在上述问题,但以下工作正常:

      {
          "parserOptions": {
              "ecmaVersion": 6
          },
      
          "env": {
              "es6": true
          }
      }
      

      【讨论】:

      • 由于某种原因,仅设置 parserOptions 版本在我的 Opera 上无法解析为有效,但包括 "env": { "es6": true } 有效。
      猜你喜欢
      • 2011-07-30
      • 2020-09-03
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 2022-10-08
      相关资源
      最近更新 更多