Eslint未定义import问题
我有一个像这样的App.js文件:
import './bootstrap'; if (document.getElementById('vue')) { new Vue({ }); }
它会导入一个包含Vue npm包(节点模块)的引导JavaScript文件。
在我的引导文件中,我像这样导入它:
import Vue from 'vue';
当我运行eslint这个设置,虽然我被告知:
“Vue”没有定义。
如果eslinter只检查每个文件,这看起来真的很明显,因为实际的Vuevariables是在导入的文件中定义的。 这可以干净地修复,或者我必须编辑我的.eslintrc.js
像这样的情况?
我相信ES6import只适用于当前文件(这是模块系统的主要优点 – 避免全球污染)。 导入一个没有绑定的模块也不会使该模块的导入可用; 他们只限于该模块的范围。
你有几个select:
-
你可以在需要的地方显式地导入它(模块预期的方式)。
import Vue from 'vue';
-
您可以从引导文件中导出Vue(以及其他任何东西)并导入所有内容:
在bootstrap.js中:
import Vue from 'vue'; export { Vue };
在App.js中:
import * as bootstrap from './bootstrap'; const Vue = bootstrap.Vue;
- 你可以在你的bootstrap文件中使Vue成为全局
window.Vue = Vue;
,但是它会window.Vue = Vue;
模块的优点:window.Vue = Vue;
MDN的进出口物品很好地概述了import和出口的各种可能的方式。
你可以在.eslintrc
尝试eslint的一些configuration来获得这个工作。 这个错误是随着es6模块 ,你可以尝试玩下面的configuration:
{ "parserOptions": { "ecmaVersion": 6, "sourceType": "module", "ecmaFeatures": { "jsx": true } }, "rules": { "semi": 2 } }