Javascript导入句柄未定义

时间:2015-11-19 16:52:14

标签: javascript node.js es6-module-loader

是否可以像下面的开关案例示例声明一样捕捉拼写错误?

首选方式是eslinter报告警告/错误。 目前,如果未定义,则toString()添加到const可用于在运行时引发TypeError

actionTypes.js

export const UPDATE_REQUEST = 'UPDATE_REQUEST';

reducer.js

import * as types from '../constants/actionTypes';

export default function pouchdbReducer(state = {}, action) {
  switch (action.type) {
    case types.UPDDATE_REQUEST:
      // there is a typo above and it evaluates to `undefined`
      // this code would never be reached - how to make it an error
      return Object.assign({}, state, {updated: true});
    default:
      return state;
  }
}

更新

正如@ n​​ikc.org使用eslint-plugin-import选项回复namespace可以用于提取此类错误。

这是一个包含配置和演示的小型存储库:

https://github.com/bmihelac/test-js-import-undefined/tree/eslint-plugin-import

eslint配置的相关部分是:

"plugins": ["import"],
"rules": {
  "import/namespace": [2],

2 个答案:

答案 0 :(得分:1)

免责声明,我是tern-lint的主角。

我建议您使用tern-lint来报告错误,例如"未知属性"。

您可以使用此linter with命令或使用支持它的编辑器(Emacs,Atom,CodeMirror或Eclipse)。这里是Eclipse tern.java

的屏幕截图

enter image description here

答案 1 :(得分:0)

我认为根据操作类型的数量(如果您愿意将其分解),您可以略微更改导入方式。

可能是这样的:

import {TYPE_ONE, TYPE_TWO} from '../constants/firstActionTypes';
import {TYPE_THREE} from '../constants/secondActionTypes';

export default function pouchdbReducer(state = {}, action) {
  switch (action.type) {
    case TTYPE_ONE:
      // Linting should identify this easily now
      return Object.assign({}, state, {updated: true});
    default:
      return state;
  }
}

典型的短裤可以很容易地选择它,另一个好处是你可以将你的行为分解为他们的担忧。