将WebSocket定义为针对React Native应用程序

时间:2017-03-03 04:53:14

标签: javascript websocket react-native eslint

我得到以下的eslint错误:

42:21  error  'WebSocket' is not defined  no-undef

您无法从react-native导入WebSocket,因为它是全局的,但当我将WebSocket作为全局变量添加到.eslintrc.yml时,它不会改变错误的结果:

globals:
   WebSocket: true

如何在React Native应用程序的ES Lint中将WebSocket定义为全局?

这可以修复吗?目前我的.eslintrc看起来像这样:

env:
  browser: false
  es6: true
  commonjs: true
  node: true
extends: 'airbnb'
parser: babel-eslint
globals:
    WebSocket: true
parserOptions:
  ecmaFeatures:
    experimentalObjectRestSpread: true
    jsx: true
  sourceType: module
plugins:
  - react
  - react-native
rules:
  indent:
    - error
    - tab
    - {"SwitchCase": 1}
  linebreak-style:
    - error
    - unix
  quotes:
    - error
    - double
  semi:
    - error
    - never
  no-tabs: off
  max-len: off
  no-console: off
  no-plusplus: off
  global-require: off
  import/no-unresolved: off
  import/extensions: off
  class-methods-use-this: off
  react/jsx-no-bind: off
  react/forbid-prop-types: off
  react/prefer-stateless-function: off
  react/jsx-indent: [2, 'tab']
  react/jsx-indent-props: [2, 'tab']
  react/jsx-filename-extension: [1, { extensions: ['.js', '.jsx'] }]
  react/jsx-uses-react: error
  react/jsx-uses-vars: error
  react-native/no-unused-styles: 2
  react-native/split-platform-components: 2
  react-native/no-inline-styles: off
  react-native/no-color-literals: off

我可以使用内联评论

来摆脱它
/* globals WebSocket:true */

此外,当我没有从airbnb eslint继承时,但我无法弄清楚Airbnb中的哪个棉绒规则是否有责任阻止它。

1 个答案:

答案 0 :(得分:1)

根据您提供的信息,看起来您的配置文件由于某种原因未被提取。 globals的配置看起来正确并且应该有效。为了弄清楚发生了什么,你应该做两件事。首先,您可以运行eslint --print-config path_to_some_js_file以查看ESLint解析所有依赖项和级联后配置的样子。很可能配置不会声明globals。之后,您可以运行eslint --debug path_to_file以查看ESLint正在使用的所有配置文件。如果未包含您的文件,请检查所有其他配置文件并验证它们中是否包含root: true(这会阻止ESLint合并父目录中的配置)。有关CLI标志的更多信息,请查看ESLint documentation