【发布时间】:2018-04-30 20:52:47
【问题描述】:
在检查导入/导出功能时,令人惊讶的是,如果在导入中使用了命名属性并且未在导出文件中定义它,那么它不会引发任何错误?
下面是例子
_export.js
export const ALPHA = 'alpha';
export const BETA = 'beta';
_import.js
import {ALPHA, BETA, GAMMA} from './export_'
console.log("alpha is ", ALPHA);
console.log("beta is", BETA);
console.log("gamma is", GAMMA);
这里GAMMA 没有在_export.js 中定义,但不要在_import.js 中抛出任何错误?
我遇到了这个问题,因为我在import 语句中不小心导入了错误的文件(2 个目录中的文件名相同),但它不会抛出任何错误,即在文件中找不到给定的导出命名属性。
这种行为是否正确?
或
linter 中是否有任何 linting 规则(例如 eslint)可以识别此类错误并向开发人员抛出错误或警告?
【问题讨论】:
-
你的 ES6 运行时应该抛出这个。
-
不,它没有抛出任何错误。
-
你使用的是哪个运行时,原生模块支持?转译后的 commonjs 模块可能不会抛出。
-
我在 macOS 中使用
babel-node并使用构建系统在 sublime text 3 中测试此功能。这有关系吗?
标签: javascript ecmascript-6 eslint