eslint解析错误:出现意外的“token function with async”。

47

我在使用ESLint的异步用法时遇到了以下错误。

ESLint解析错误:使用async时出现意外的令牌函数

这是我的eslintsrc文件。

{
  "extends": "airbnb-base",
  "rules": {
    "no-console": "off",
    "func-style":"error",
    "import/no-extraneous-dependencies": ["error", {"devDependencies": false, "optionalDependencies": false, "peerDependencies": false, "packageDir": "./"}]
},
"parserOptions": {
  "ecmaVersion":8
 }
}

更新

这是我的异步函数

const get = async function get(req, res) {
  const user = await service.get();
  console.log("From db",user.username);
  res.send('ok');
};

请问您能否分享一下async的使用方式以及它引发的错误是什么? - Jonathan Lonowski
@JonathanLonowski 更新了我的异步代码。 - shellakkshellu
在代码片段中没有看到相同的错误,至少在ESLint演示中没有看到。可能是打字错误?您提到设置保存在eslintsrc中。文件名中不应该有第二个s - Jonathan Lonowski
这是一个打字错误,文件名应该是 eslintrc,但我仍然从 eslint 得到相同的错误。 - shellakkshellu
如果您是第一次使用async/await,请注意以下情况。如果您在未定义为async的函数内部使用await,则会出现此错误。这种情况下,它不是EsLint配置问题,而是语法错误。 - Mig82
4个回答

139

我也遇到了这个错误,然后我在我的eslintrc中添加了以下内容:

{
  "env": {
    "node": true,
    "es6": true
  },

  "parserOptions": {
    "ecmaVersion": 8
  }
}

6
"parserOptions": { "ecmaVersion": 8 } 对我有效! - Detoner
它能够工作是因为你添加了异步支持。 - alexalejandroem
1
目前,使用具有commonjses6nodemocha和环境变量为tru的类似文件无法正常工作,并且parserOptions设置为requireConfigFile: falseparser: "@babel/eslint-parser""ecmaFeatures.ecmaVersion": 2018"sourceType": "module" - Pim van der Heijden
这对我没有解决问题。我正在使用最新版本的所有内容,仍然出现错误。 - Scorb
我的 .eslintrc 文件中有 "ecmaVersion": 6,。将其中的 6 改为 8 后,问题得到解决。 - undefined

7

在我的情况下,问题被修复了,当我只是从以下更改时:

"parserOptions": { "ecmaVersion": 8 }

"parserOptions": { "ecmaVersion": 2018 }


改变了什么? - madhairsilence

2
这是关于func-style的错误。默认情况下,它使用类型expression,使用expression表示函数的正确方式是:
const get = async get(req, res) {
  const user = await service.get();
  console.log("From db",user.username);
  res.send('ok');
};

请查看文档以获取更多示例,https://eslint.org/docs/rules/func-style

更新: 忘记看到您已添加错误,您所做的是正确的,

const get = async function get(req, res) {
  const user = await service.get();
  console.log("From db",user.username);
  res.send('ok');
};

只需从eslint中删除func-style


出现了另一个错误 [eslint] 解析错误:意外的令牌get [js] 预期“,”。 - shellakkshellu
你是在询问是否需要从eslintrc规则中移除func-style吗? - shellakkshellu
虽然我使用了Airbnb代码风格指南,但仍然移除了代码,但仍然出现了错误。 - shellakkshellu
我的eslint文件中没有任何规则或推荐规则,也没有任何文件覆盖我的eslint文件,但我仍然收到错误提示。这是否意味着它在eslint的核心中自动激活了? - Ini
"rules": {"func-style": "off"} 对我没有起作用。 - user210757
显示剩余2条评论

-6

如果你是项目新手,我建议只使用 promises :)

function openTabs(array) {
    return new Promise((resolve, reject) => {
        //... your code
    });
}

不好的答案。你不应该因为 ESLINT 而更改这样的东西,特别是当运行它时不会引发异常时,这只会导致更繁琐的方法。 - Epic Speedy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接