Vue - webpack vue-loader 配置

Posted

技术标签:

【中文标题】Vue - webpack vue-loader 配置【英文标题】:Vue - webpack vue-loader configuration 【发布时间】:2017-08-10 16:53:48 【问题描述】:

每当我想构建文件时,我都会不断收到错误消息。它的原因是什么? 似乎 .vue 文件无法被 webpack 识别,但 webpack 配置文件看起来正常。 网页包错误

bundle-app.js   189 kB       1  [emitted]  app
    + 12 hidden modules

ERROR in Unexpected token >
 @ ./app/application.js 7:11-31

webpack.config.js

var path = require("path");

module.exports = 
  context: path.join(__dirname, 'src'),
  entry: 
    app: './app/application.js'
  ,
  output: 
    path: path.join(__dirname, 'dist'),
    filename: 'bundle-[name].js'
  ,
  module: 
    loaders: [
      
        test: /\.js$/,
        loader: 'babel-loader',
        include: /src/,
        query: 
          presets: ["es2015"]
        
      ,
      
        test: /\.vue$/,
        loader: 'vue',
      ,
    ]
  ,
  vue: 
    loaders: 
      js: 'babel'
    
  

package.json

"devDependencies": 
    "webpack": "~2.2.1",
    "babel-core": "~6.23.1",
    "babel-loader": "~6.3.1",
    "babel-preset-es2015": "~6.22.0",
    "sass-loader": "~6.0.0",
    "node-sass": "~4.5.0",
    "extract-text-webpack-plugin": "~2.0.0-rc.3",
    "vue-template-compiler": "~2.2.4",
    "css-loader": "~0.27.3",
    "vue-loader": "~11.1.4"
  ,
  "dependencies": 
    "vue": "~2.2.4"
  

app/application.js

import Vue from 'vue'
import App from './app.vue'

new Vue(
  el: 'body',
  component:  App 
)

app/app.vue

<template>
  <div id="app">
  </div>
</template>

<script>

    export default 
      data () 
        return 
          msg: 'Hello from vue-loader!'
        
      
    

【问题讨论】:

尝试将 es2015 预设移动到单独的 .babelrc 文件。它应该看起来像这样 "presets": ["es2015"], "comments": false 更多信息请查看这里 github.com/bedakb/vuewp/blob/master/.babelrc 还要考虑不要将 vue 应用程序挂载到 body 标签,跨度> @BelminBedak 我已经完成了,但仍然出现错误 啊,由于您使用的是 webpack 2,您现在不能省略 -loader 关键字。尝试将 loader: 'vue' 更改为 loader: 'vue-loader' 在导出默认 ... 之后你不是错过了关闭 &lt;/script&gt; 吗? 在这里发现错字component: App 应该是组件 - 复数。 【参考方案1】:

你需要做一些额外的配置,加载器才能正常工作。

我强烈建议您使用vue-cli 进行设置,一切正常。

npm install -g vue-cli
vue init webpack-simple hello
cd hello
npm install
npm run dev

基本上,在您的webpack.config.js,您忘记/犯了以下错误:

1- 加载程序名称应为 loader: 'vue-loader' 而不是 loader: 'vue'

2- 创建一个名为resolve 的密钥,其内容为:

alias: 
  vue$: 'vue/dist/vue.common.js',

3- 而这个密钥vue: ...loader: babel,不是必需的。

【讨论】:

我的 webpack 配置文件中有多个入口点,我已经在工作了。我不想通过 vue-cli 创建新项目造成更大的混乱。但是,将来我会以这种方式启动我的 vue 项目。奥布里加多 :) 哇!它以这种方式工作吗?奇怪的。无论如何,我也不担心使用这个创建一切的工具,但在 vue-cli 的情况下,它非常简单和微小。尝试在演示文件夹中创建,并查看 webpack.config。 你的绝对是要走的路。但是,如果您来自 Vue+Webpack 教程并且只想将vue-loader 添加到等式中,只需将以下内容添加到您的 webpack 配置中就足够了:module: loaders: [ test: /\.vue$/, loader: 'vue-loader', , ] 我真的不知道为什么 Vue 文档如此在这一点上晦涩难懂,并迫使您在 NPM 安装模块并向 webpack 配置中添加一些行就足够了时使用vue-cli【参考方案2】:

在使用vue的项目中,个人不建议单独配置webpack和vue-loader。可以直接使用vue官方脚手架,vue-cli。不用考虑这些配置,自动配置。vue-cli

如果您刚开始学习 Vue,这里有一个入门级演示。虽然只是一个小应用,但是涵盖了很多知识点(vue2.0 + vue-cli + vue-router + vuex + axios + mysql + express + pm2 + webpack),包括前端、后端、数据库等网站的一些必要元素,对我来说,学习意义重大,希望互相鼓励!

Vue Demo

【讨论】:

【参考方案3】:

你在使用带有 ESLint 的 vue-cli 吗? 如果这样做,则需要在最后一个元素事件和分号之后使用逗号。

import Vue from 'vue';
import App from './app.vue';

new Vue(
  el: 'body',
  components:  App ,
);

【讨论】:

以上是关于Vue - webpack vue-loader 配置的主要内容,如果未能解决你的问题,请参考以下文章

Vue + Webpack + Vue-loader 功能介绍

webpack 4+ vue-loader 配置

vue24-webpack+vue-loader

组件的 vue.js 自定义 css(没有 webpack 和 vue-loader)

Vue - webpack vue-loader 配置

如何在 Vue+webpack+vue-loader 项目中从不同的 js 文件中导入函数