在自定义 ESLint 规则的回调函数中使用 async/await 的问题

问题描述 投票:0回答:1

我在自定义 ESLint 规则中集成异步/等待操作时遇到问题。这是我的代码的简化版本:

module.exports = {
    meta: {
        type: "problem",
        docs: {
            description: "This rule checks if any vulnerabilities appear in an imported package"
        },
        fixable: false,
        schema: []
    },
    create(context) {
        return {
            async ImportDeclaration(node) {
                const data = await apiCall();
                context.report({
                    node,
                    message: "message"
                });
            }
        };
    }
}

当我在 ImportDeclaration 回调中包含异步操作(await apiCall())时,就会出现问题。 context.report() 方法似乎没有按预期工作。但是,当我删除 async/await 操作时,context.report() 可以正常运行。

有人可以指导我如何在 ESLint 规则回调中正确处理异步操作,确保 context.report() 正常运行吗?任何见解或替代方法将不胜感激。谢谢!

javascript reactjs babeljs eslint abstract-syntax-tree
1个回答
0
投票

提供给 module.exports 的 create() 函数应该是同步的。它不能是异步函数。您可以在规则回调中使用异步操作,但 create() 函数本身不应该是异步的

© www.soinside.com 2019 - 2024. All rights reserved.