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 解析错误:带有异步的意外令牌函数的主要内容,如果未能解决你的问题,请参考以下文章