Javascript Eslint从另一个文件确定全局变量

Javascript Eslint从另一个文件确定全局变量,javascript,eslint,Javascript,Eslint,我试图以这样一种方式设置ESLint,即它在lint实际目标文件之前解析globals声明文件,这样我就不必将所有确实是globals的函数和变量声明为globals,但让解析器明白: 在一些_module.js中: function do_something() { if (glob_action("foobar")) { ... something something ... } } 在globals.js中,我有一组实用程序和全局变量: function glob_ac

我试图以这样一种方式设置ESLint,即它在lint实际目标文件之前解析globals声明文件,这样我就不必将所有确实是globals的函数和变量声明为globals,但让解析器明白:

一些_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"*/

可能吗?如何操作?

我强烈建议使用导入/导出机制,而不是让每个成员都可以全局访问

使用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");

请参阅:有关从其他模块导入成员的详细信息。

您是否考虑过在一个列表中指定它们?显然是的,但这样我必须维护两个全局列表。我不想成为维护支持文件的奴隶。相关问题: