web-dev-qa-db-ja.com

ES6構文を使用したvueでの複数のコンポーネントのインポートは機能しません

だから私はフォルダ「views /」から他のコンポーネントを必要とするvueインスタンスを作成しようとしています

ファイル構造は次のとおりです。

  • 事業
    • ビルド/
    • config /
    • 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

12
Hansen W

これは正しい方法ではありません。

import { something } from 'some_file';

デフォルトではエクスポートされないものをインポートすることです!これは、1つのファイルが多くのものを公開する場合に役立ちます。

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
}

これは動作するはずです。ES6インポートについての詳細を読んでみてください https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

17
aks