要求模块以防止eslint错误的正确方法

时间:2019-04-18 17:14:48

标签: node.js eslint

我最近开始使用eslint,发现我所有的代码都在我需要的模块出错,因为它说未分配函数名。

mymodule.js

module.exports = {
  one: function() {
    console.log(1);
  },
  two: function() {
    console.log(2);
  }
}

index.js

require('./mymodule.js');
one(); // eslint says 'one is not defined'

我应该事先将“ one”声明为变量,这是正确的方法吗?还是有更好的方法?

2 个答案:

答案 0 :(得分:1)

我通常要做的是在文件顶部添加一个global注释:

/* global one */

require('./mymodule.js');
one();

您还可以将更多标识符指定为以逗号分隔的列表:/* global one, two */

或者,您可以将未声明的标识符添加到.eslintrc文件的global部分:

{
    ...

    "globals": {
        "one": "readonly"
    },

    ...
}

更多信息:https://eslint.org/docs/user-guide/configuring#specifying-globals

答案 1 :(得分:0)

我根本无法运行示例“ index.js”(节点8.15),因为节点解释器本身告诉我eslint告诉您ReferenceError: one is not defined的情况。从模块导出/导入的东西不会自动进入全局名称空间。

我将执行以下任一操作:

A)导入整个mymodule

const mymodule = require('./mymodule');
mymodule.one();

B)按名称导入mymodule的有趣部分

const { one /* , two, three, etc */ } = require('./mymodule');
one();

C)导入mymodule的单个成员

const one = require('./mymodule').one;
one();