有人能帮我解决这个问题吗?我正在努力学习如何使用Laravel的elixir.browserify + vue.js,但我无法做到这一点!我得到了一个错误:
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
{
"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
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.browserify('main.js');
});main.js
var Vue = require('vue')
var Skills = require('./components/skills.vue')
new Vue({
el: '#app',
components: {
'skills' : Skills
}
})和/组件/技能
<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>发布于 2015-12-11 15:47:50
在环顾四周一段时间后,我发现了this repo (JeffreyWay),它说我需要在我的gulp文件中添加一些行
基本上我需要这个:
npm install laravel-elixir-vueify然后在我的档案里:
var elixir = require('laravel-elixir');
require('laravel-elixir-vueify'); ---> this line was missing
elixir(function(mix) {
mix.browserify('main.js');
});我推销灵丹妙药已经和vueify兼容了:/我希望这对任何人都有帮助。很抱歉让谁帮我浪费你的时间。
发布于 2016-08-17 14:04:52
我知道这已经是很久以前了,但是将这个代码块放入您的package.json文件中将正确地编译它。
"browserify": {
"transform": [
"vueify",
"babelify"
]
},现在您可以再次运行gulp
发布于 2015-12-11 14:23:18
看起来你把模板和Javascript代码混在一起了。
在main.js中,您可以这样做:
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。为了使它正常工作,我必须在我的吞咽文件中添加一些配置:
// 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) { ... });我猜您需要执行类似于我上面的第一个配置项的操作:
elixir.config.js.browserify.transformers.push({
name: 'vueify',
options: {}
});这将指示browserify向其转换堆栈中添加vueify。
您还可能需要第二个选择:
elixir.config.js.browserify.options.extensions = ['.vue'];但我不确定。在我的系统中,添加.coffee扩展允许我引用代码中没有.coffee扩展的模块。看来你没那么做。
希望这能帮上忙!
https://stackoverflow.com/questions/34224876
复制相似问题