eslint / *导出的functionName * /不在浏览器环境中工作

时间:2016-05-26 21:01:15

标签: javascript eslint

我有一些在一个js文件中定义并在其他文件中使用的函数。他们每个都有(?s)个评论,我将我的eslint env设置为browser / jquery。基于我对documentation的阅读,这是我应该需要的,但它似乎没有用。

我在这里做错了什么?

这是.eslintrc(它扩展this one,虽然我没有/* exported functionName */得到相同的行为):

extends

而且,这是其中一个功能(这里是secondthird):

{
  "extends": "../../.eslintrc",
  "env": {
    "browser": true,
    "jquery": true
  }
}

最后,这是我从eslint得到的输出:

/**
 * Returns the next hour as Date
 * @return {Date} the next hour
 */
/* exported nextHour */
function nextHour() {
  var oneHour = new Date();
  oneHour.setHours(oneHour.getHours() + 1);
  return oneHour;
}

如果我用/Users/nfriedly/visual-recognition-nodejs/public/js/demo.js 24:10 error 'nextHour' is defined but never used no-unused-vars 37:10 error 'resize' is defined but never used no-unused-vars /Users/nfriedly/visual-recognition-nodejs/public/js/use.js 26:10 error 'setupUse' is defined but never used no-unused-vars 替换/* exported...条评论,则可行,但我知道这不是正确的解决方案。

您可以从https://github.com/watson-developer-cloud/visual-recognition-nodejs/tree/eslint-exported查看完整的项目,然后运行// eslint-disable-next-line no-unused-vars,如果您想亲眼看到它。

2 个答案:

答案 0 :(得分:1)

显然,airbnb配置指定的Babel-ESLint解析器可以覆盖配置文件的解析,以打破记录的级联行为。设置"parser": null会解决此问题。

答案 1 :(得分:0)

您的配置声明您正在使用Node环境。 Node在每个模块周围都有一个额外的范围,因此Node中不可能实现全局变量(至少与浏览器中的方式不同)。因此,当no-unused-vars规则看到任何具有globalReturn标志的环境(节点,CommonJS,共享节点浏览器)或模块时,它会忽略/* exported */个注释。如果要使用全局变量和导出的注释,则需要删除Node环境并启用浏览器环境。