使用ES6语法在vue中导入多个组件不起作用

时间:2017-03-28 04:49:13

标签: javascript webpack ecmascript-6 importerror vuejs2

所以我试图创建一个需要文件夹“views /”

中的其他组件的vue实例

这是文件结构:

  • 项目
    • 构建/
    • 配置/
    • node_modules /
    • 的src /
      • 视图/
      • 组件/
    • App.vue

如果我在App.vue中执行此操作,服务器将运行时没有错误:

import Navbar from 'layouts/Navbar'
import Topbar from 'layouts/Topbar'
import AppMain from 'layouts/AppMain'

但如果我尝试这样做:

import { AppMain, Navbar, Topbar } from 'layouts/'

服务器将无法运行并将返回:

This dependency was not found:
* views/ in ./src/router/index.js

这是webpack.base.config.js

function resolve (dir) {
  return path.join(__dirname, '..', dir)
}

module.exports = {
  entry: {
    app: './src/main.js'
  },
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath
  },
  resolve: {
    extensions: ['.js', '.vue', '.json', '.scss'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      'layouts': resolve('src/layouts'),
      'views': resolve('src/views'),
      'components': resolve('src/components'),
      'variables': path.resolve(__dirname, '../src/assets/common/variables.scss'),
    },
  },

我真的不知道什么是错的,plz帮助,thx

1 个答案:

答案 0 :(得分:14)

这不是正确的方法。

import { something } from 'some_file';

是关于导入默认情况下未导出的内容!当一个文件暴露很多东西时,这很有用。

import Something from 'some_file';

是关于从文件中导入默认导出项目。

使用当前设置无法编写内容。你必须写得像:

import { AppMain, Navbar, Topbar } from 'layouts';

然后在布局中创建一个index.js文件,然后将是该文件的内容:

import Navbar from 'layouts/Navbar'
import Topbar from 'layouts/Topbar'
import AppMain from 'layouts/AppMain'

export {
  Navbar,
  Topbar,
  AppMain
}

现在应该可以使用,请尝试阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

上有关ES6导入的更多信息