我试图以这样一种方式设置ESLint,即在拉出实际目标文件之前解析全局声明文件,这样我就不必将全局变量声明为全局的所有函数和变量确实是全局的,但是让解析器弄清楚:
在 some_module.js :
function do_something() {
if (glob_action("foobar")) {
... something something ...
}
}
在 globals.js 中,我有一组实用程序和全局变量:
function glob_action(x) {
... something something ...
}
那么我如何告诉ESlint将global.js包含在确定以下事实中:
76:3 error 'glob_action' is not defined no-undef
实际上并未定义,但我不想将其列为全局:
/*global glob_action*/
我想做点什么:
/*eslint include "../globa.js"*/
有可能吗?怎么样?
答案 0 :(得分:0)
我强烈建议您使用导入/导出机制,而不是让每个成员都可以全局访问。
使用ES6模块时,您可以像下面这样在 globals.js 中导出函数:
export function glob_action(x) {
... something something ...
}
然后您需要将其导入您的 some_module.js 中以使用它:
import { glob_action } from './globals.js';
// ...
function do_something() {
if (glob_action("foobar")) {
... something something ...
}
}
这样eslint不会抛出错误。
您将需要在每个要使用它们的模块中导入资源,因此它并不像您要求的那样通用,但是这样您就不会污染您的全局名称空间。 另外,您不需要手动导入每个功能,因为您可以使用以下命令导入整个模块:
import * as globals from './globals.js'
,然后像这样访问它们:
globals.glob_action("foobar");
有关从其他模块导入成员的更多信息,请参见:https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/import。