vueify(在gulp任务中)与vue文件的babel转换
固定的 解决办法是:vueify(在gulp任务中)与vue文件的babel转换,gulp,ecmascript-6,vue.js,browserify,vueify,Gulp,Ecmascript 6,Vue.js,Browserify,Vueify,固定的 解决办法是: 通过.transform(babelify) 确保所有.vue-文件脚本元素看起来像——该类型属性必须位于自定义属性、lang属性之前。。可能是标记上的第一个,甚至是唯一的属性 我想我的问题是我的VUE中有es6。我得到: [09:33:36] Starting 'public'... events.js:160 throw er; // Unhandled 'error' event ^ SyntaxError: 'import' and 'ex
.transform(babelify)
.vue
-文件脚本元素看起来像
——该类型属性必须位于自定义属性、lang属性之前。。可能是标记上的第一个,甚至是唯一的属性[09:33:36] Starting 'public'...
events.js:160
throw er; // Unhandled 'error' event
^
SyntaxError: 'import' and 'export' may appear only with 'sourceType: module'
npm ERR! Windows_NT 10.0.14393
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "s
tart"
这个错误并没有真正告诉我它来自哪里(我的理解是它来自browserify),但是如果我将公共脚本设为null,那么构建的其余部分就会工作。下面是脚本:
gulp.task('public', ['public/styles'], () => {
mkdirp.sync(dest+'/public/scripts')
return browserify('public/scripts/demo.js')
.transform(vueify)
.bundle()
.pipe(fs.createWriteStream(dest+'/public/scripts/index.js'))
})
这基本上是从vueify的readme.MD复制的。它的依赖性public/style
确实有效
所以,我想,让我们试着手动编译它们。我确保我有巴别塔核心和巴别塔预设最新。然后:生成文件:
B.法律改革委员会
{“预设”:[“最新”]}
vue.config.js
这基本上是直接从readme.MD中获得的,但是对于es6来说
然后我将VUE更改为具有该标记,如:
<template>
<div class="container">
<app-header></app-header>
<div class="row"><div class="col-xs-12">
<transition name="slide" mode="out-in">
<router-view></router-view>
</transition>
</div></div>
</div>
</template>
<script lang="es6">
import Header from './Header.vue'
export default {
components: {
appHeader: Header
},
created() {
this.$store.dispatch('initClasses')
}
}
</script>
<style>
body {
padding: 5vmin;
}
.slide-enter-active { animation: slide-in 200ms ease-out forwards }
.slide-leave-active { animation: slide-out 200ms ease-out forwards }
@keyframes slide-in {
from { transform: translateY(-30vmin); opacity: 0 }
to { transform: translateY(0px); opacity: 1}
}
@keyframes slide-out {
from { transform: translateY(0px); opacity: 1 }
to { transform: translateY(-30vmin); opacity: 0}
}
</style>
几乎修好了。
在帮助下,我的宝宝不会被vues噎住。这实际上相当模糊但很简单,只需去掉lang
属性,并向每个脚本标记添加type=“text/javascript”
。(不能只添加该类型规范,它必须是script元素中的第一个标记)
它几乎起作用了。现在我得到:
[14:04:32] Starting 'public'...
events.js:160
throw er; // Unhandled 'error' event
^
Error: Cannot find module './vues/Home.vue' from 'C:\Users\roberto\github\cmst385-accessibility\public\scripts'
这不是主js文件!它位于routes.js
我主要有:
这两种方法都有效
在路线上,我有:
即使文件在那里,这也不起作用
答对 了
好的,所以我实际上将文件命名为“Home..vue”:)这些东西在没有看到项目的情况下总是很难调试,但我可以向您展示我是如何设置的,您可以检查是否所有这些东西都准备好了: 首先,确保您可以在
gulpfile
中使用ES6
。最简单的方法是将其命名为gulpfile.babel.js
。我猜您在编译样式时已经有了这个设置
现在,请确保您已经安装了最新版本的巴别塔,我再次确认您已经安装了:
npm install --save-dev babel-preset-latest
我实际上使用了,因此如果您发现最新的
是您的问题,只需安装它,然后将以下内容添加到您的.babelrc
:
{
"presets": ["es2015"]
}
现在,确保您已安装了babelify
:
npm install --save-dev babelify
然后将以下内容添加到package.json
:
"browserify": {
"transform": [
"babelify",
"vueify"
]
}
这意味着您可以摆脱vue.config.js
,因为browserify
现在应该自动应用转换
最后,在您的gulpfile中,您可以执行以下操作:
gulp.task('public', ['public/styles'], () => {
return browserify({
entries: 'public/scripts/demo.js',
debug: true
})
.bundle()
.pipe(source('demo.js')))
.pipe(gulp.dest('public/scripts'));
});
我从未需要将lang
属性添加到script
标记中,以使此功能正常工作。解决方案是:
通过.transform(babelify)
也可以(或者按照描述中列出的操作,并在package.json中将其设置为通过babelify)
确保所有.vue
-文件脚本元素看起来像
——该类型属性必须位于自定义属性、lang属性之前。。可能是标记上的第一个,甚至是唯一的属性
我试着把babel插件transform vue jsx
安装起来,但是由于import语句被嵌套(转换为jsx时它们不是顶级的),所以在细节上给您投票。非常感谢。那是哪种乙烯基原料,stream?我得到错误:解析文件C:\Users\roberto\github\cmst385 accessibility\public\scripts\vues\App.vue:“导入”和“导出”可能只出现在顶层(5:0)
执行此操作。ps>添加了我的开发依赖项-您可以比较版本吗?这可能是browserify版本的问题。pps>你为什么认为要使用babelify?vueify文档非常清楚地表明,它不需要额外的配置,如果有babel core,它甚至会违背您的意愿使用它(不确定是否会发生这种情况,但…)。这是可能的,我使用的是browserify 13.1.1
。看起来您的问题确实与transpilingES6
有关。我最近有一个关于GitHub的项目,所以你可以看看我的,你可能会觉得很有帮助。然后我把你的src/目录换成了我的,得到了同样的“App.vue”错误。然后我注意到你所有的vue
标记都有“type=”text/javascrirpt“`所以我添加了它们,但什么也没有发生。但是我也删除了我的语言标记,以便元素看起来完全相同(脚本和类型之间没有任何区别)瞧!另一个错误:错误:找不到模块。/vues/Home.vue来自“C:\Users\roberto\github\cmst385 accessibility\public\scripts”
-这不是来自主文件,而是来自主文件中的导入路径
。现在几乎可以工作了。明白了:)这是我以前所需要的,我只是在磁盘上的文件名有一个输入错误。
{
"presets": ["es2015"]
}
npm install --save-dev babelify
"browserify": {
"transform": [
"babelify",
"vueify"
]
}
gulp.task('public', ['public/styles'], () => {
return browserify({
entries: 'public/scripts/demo.js',
debug: true
})
.bundle()
.pipe(source('demo.js')))
.pipe(gulp.dest('public/scripts'));
});