首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >失败了!:意外令牌-使用VueJs

失败了!:意外令牌-使用VueJs
EN

Stack Overflow用户
提问于 2015-12-11 13:39:48
回答 3查看 4.1K关注 0票数 4

有人能帮我解决这个问题吗?我正在努力学习如何使用Laravel的elixir.browserify + vue.js,但我无法做到这一点!我得到了一个错误:

代码语言:javascript
复制
gulp-notify: [Laravel Elixir] Browserify Failed!: Unexpected token

D:\xampp\htdocs\pwebdev-project\resources\assets\js\components\skills.vue:1
<template>
^
ParseError: Unexpected token

知道有什么问题吗?我需要指定什么地方我想使用vueify还是我只需要npm安装它,就像我做的那样?

package.json

代码语言:javascript
复制
{
  "private": true,
  "devDependencies": {
    "babel-runtime": "^6.3.13",
    "gulp": "^3.8.8",
    "vue-hot-reload-api": "^1.2.2",
    "vueify": "^7.0.2"
  },
  "dependencies": {
    "bootstrap": "^3.3.6",
    "font-awesome": "^4.5.0",
    "jquery": "^2.1.4",
    "laravel-elixir": "^4.0.0",
    "vue": "^1.0.11",
    "vue-resource": "^0.1.17"
  }
 }

gulpfile.js

代码语言:javascript
复制
var elixir = require('laravel-elixir');

elixir(function(mix) {
    mix.browserify('main.js');
});

main.js

代码语言:javascript
复制
var Vue = require('vue')
var Skills = require('./components/skills.vue')

new Vue({
    el: '#app',
    components: {
        'skills' : Skills
    }
})

和/组件/技能

代码语言:javascript
复制
<template>
    <div>
        <select v-model="skills_array" class="form-control" multiple>
            <option v-for="skill in list" value="@{{skill.id }}" >
                @{{ skill.name }}
            </option>
        </select>
        <input type="text" name="skills" hidden v-model="skills_array">
    </div>
</template>

<script>
    export default {
        created: function () {
            var data = [];
            for (var i = 0; i < this.list.length; i++) {
                data.push({
                    'id': this.list[i].id,
                    'name': this.list[i].name,
                    'selected': false
                });
            }

            this.list = data;
            this.skills_array = [];
        },
        props: ['list', 'skills_array']
    }
</script>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-11 15:47:50

在环顾四周一段时间后,我发现了this repo (JeffreyWay),它说我需要在我的gulp文件中添加一些行

基本上我需要这个:

代码语言:javascript
复制
npm install laravel-elixir-vueify

然后在我的档案里:

代码语言:javascript
复制
var elixir = require('laravel-elixir');

require('laravel-elixir-vueify');  ---> this line was missing

elixir(function(mix) {
    mix.browserify('main.js');
});

我推销灵丹妙药已经和vueify兼容了:/我希望这对任何人都有帮助。很抱歉让谁帮我浪费你的时间。

票数 10
EN

Stack Overflow用户

发布于 2016-08-17 14:04:52

我知道这已经是很久以前了,但是将这个代码块放入您的package.json文件中将正确地编译它。

代码语言:javascript
复制
  "browserify": {
    "transform": [
      "vueify",
      "babelify"
    ]
  },

现在您可以再次运行gulp

票数 3
EN

Stack Overflow用户

发布于 2015-12-11 14:23:18

看起来你把模板和Javascript代码混在一起了。

main.js中,您可以这样做:

代码语言:javascript
复制
var Skills = require('./components/skills.vue')

require旨在导入Javascript模块,以便一个模块中的代码可以在另一个模块中使用。components/skills.vue不是Javascript文件,而是HTML。所以Javascript解释器被它呛死了。

您需要重写skills.vue来公开Javascript。HTML应该(可能)被移动到刀片模板中--我说可能是因为它看起来您可能试图在Vue中使用Javascript模板系统--这是我没有太多经验的东西(我在您发布的代码中看不到任何证据)。

编辑

我以前从未使用过vueify,但我的猜测是,您的gulpfile.js中缺少一些应该配置vueify的东西。

例如,我编写Coffeescript而不是Javascript,并使用elixir浏览我的Coffeescript。为了使它正常工作,我必须在我的吞咽文件中添加一些配置:

代码语言:javascript
复制
// add the coffeeify transform to the browserify stack
//
elixir.config.js.browserify.transformers.push({
    name: 'coffeeify',
    options: {}
});

// configure browserify to recognize the .coffee extension
//
elixir.config.js.browserify.options.extensions = ['.coffee'];

elixir(function(mix) { ... });

我猜您需要执行类似于我上面的第一个配置项的操作:

代码语言:javascript
复制
elixir.config.js.browserify.transformers.push({
    name: 'vueify',
    options: {}
});

这将指示browserify向其转换堆栈中添加vueify。

您还可能需要第二个选择:

代码语言:javascript
复制
elixir.config.js.browserify.options.extensions = ['.vue'];

但我不确定。在我的系统中,添加.coffee扩展允许我引用代码中没有.coffee扩展的模块。看来你没那么做。

希望这能帮上忙!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34224876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档