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:

  1. 你可以在需要的地方显式地导入它(模块预期的方式)。

     import Vue from 'vue'; 
  2. 您可以从引导文件中导出Vue(以及其他任何东西)并导入所有内容:

    在bootstrap.js中:

     import Vue from 'vue'; export { Vue }; 

    在App.js中:

     import * as bootstrap from './bootstrap'; const Vue = bootstrap.Vue; 
  3. 你可以在你的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 } }