问题描述
我可以将最新版本的 Chrome、Firefox 和 Edge (Chromium) 与 Tampermonkey 一起使用,并且它们都支持在我的用户脚本中使用 const
。但是,对于带有 Tampermonkey 4.11.6120 的 Opera 73.0.3856.284,我收到一个错误,“eslint:null - 解析错误:关键字 'const' 被保留”。虽然我知道我可以使用 var
或 let
,但我想知道是否存在导致此错误的特定原因。我的用户脚本是跨浏览器的,我希望是否有办法使用 const 而不会出现此错误。下面的图片只是我用 const 制作的一个用户脚本来显示错误:
const x = 2;
alert(x);
并且警报给出了 2。因此,我怀疑代码运行良好,但这是 Tampermonkey 的内部错误。事实上,我坚信确实如此,因为我刚刚看到这个问题:https://github.com/Tampermonkey/tampermonkey/issues/1099
解决方法
您看到的只是 Tampermonkey 提供的浏览器内编辑器的 linting 错误,而不是 JavaScript 运行时错误。您的脚本在现代版本的 Opera 中应该可以正常工作;您可以放心地忽略该警告。
如果您不喜欢警告的外观,可以改用外部脚本编辑器,例如,使用:
// @require file://C:/PATH_TO_FILE.user.js
在元数据块中,元数据块之后没有内容。改为在 PATH_TO_FILE.user.js
中编写代码。
如果尚未报告,您也可以在 Tampermonkey 的 github 上提出问题,要求修复浏览器内编辑器。
,ESLint 设置为旧的 ECMAScript,尽管我在 Firefox 上默认安装了 TamperMonkey 4.11.6120 时没有收到该错误。
它可能特定于 Opera 安装。
TamperMonkey → 设置 → 自定义 Linter 配置
{
"parserOptions": {
"ecmaVersion": 6
}
}
以前... eslint: error Parsing error: The keyword 'const' is reserved
更新:来自CertainPerformance的评论
似乎 Opera 安装有上述问题,但以下有效:
{
"parserOptions": {
"ecmaVersion": 6
},"env": {
"es6": true
}
}