我最近开始使用eslint,发现我所有的代码都在我需要的模块出错,因为它说未分配函数名。
module.exports = {
one: function() {
console.log(1);
},
two: function() {
console.log(2);
}
}
require('./mymodule.js');
one(); // eslint says 'one is not defined'
我应该事先将“ one”声明为变量,这是正确的方法吗?还是有更好的方法?
答案 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();