eslint 解析错误:带有异步的意外令牌函数

Posted

技术标签:

【中文标题】eslint 解析错误:带有异步的意外令牌函数【英文标题】:eslint Parsing error: Unexpected token function with async 【发布时间】:2018-10-21 11:41:35 【问题描述】:

我在 ESLINT 上的异步使用中收到以下错误。

eslint 解析错误:意外的异步令牌函数

这是我的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的用法,它引发了错误? @JonathanLonowski 更新了我的异步代码 在 sn-p 中没有看到同样的错误,至少在 ESLint's demo 中是这样。 – 可能是错字?您提到设置保存在eslintsrc。文件名中不应有第二个s 文件名是eslintrc 是一个错字,但我仍然从 eslint 收到同样的错误 以防第一次使用 async/await 的人发生这种情况。如果您在未定义为async 的函数中使用await,也会出现此错误。在这种情况下,这不是 EsLint 配置问题,而是语法错误。 【参考方案1】:

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


  "env": 
    "node": true,
    "es6": true
  ,

  "parserOptions": 
    "ecmaVersion": 8
  

【讨论】:

"parserOptions": "ecmaVersion": 8 适合我! 它可以工作,因为你添加了对异步的支持 这目前不适用于具有commonjs es6 node mocha tru in env 和 parserOptions requireConfigFile: false parser: "@babel/eslint-parser" "ecmaFeatures.ecmaVersion": 2018"sourceType": "module" 的类似文件跨度>【参考方案2】:

就我而言,当我刚从以下位置更改时它得到了修复:

“解析器选项”: “ecmaVersion”:8

“parserOptions”:“ecmaVersion”:2018

【讨论】:

改变了什么?。【参考方案3】:

这是关于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] 解析错误: Unexpected token get [js] ',' expected. 已更新答案,请检查一次。 您要求从 eslintrc 规则中删除 func-style`?? 是的,删除它。 已删除,但我仍然收到错误,我使用的是 airbnb 样式指南【参考方案4】:

如果您是该项目的新手,我建议您返回承诺 :)

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

【讨论】:

错误答案。你不应该因为 ESLINT 而改变这样的东西,尤其是当它运行时不会导致异常时,这只是要求一种更繁琐的方法。

以上是关于eslint 解析错误:带有异步的意外令牌函数的主要内容,如果未能解决你的问题,请参考以下文章

解析错误:意外的令牌,预期的“...”

eslint“解析错误:JSX中的意外令牌”

ESLint:解析错误:意外令牌:

如何修复意外令牌“/”的 ESLint 解析错误?

解析错误:由“<!DOCTYPE html>”引起的意外令牌更漂亮/更漂亮

解析错误:Firebase 云函数中出现意外的令牌 selectWinner - Node.js V10