vueify:无法安装组件:未定义模板或渲染函数
vueify: Failed to mount component: template or render function not defined
我正在使用带有 browserify 和 vueify 的简单 vue.js 设置。
按照之前的指导,我还添加了别名作为依赖项,以便使用模板引擎。这是我的 package.json 文件:
{
"name": "simple-vueify-setup",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "budo index.js:build.js --open --live"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"vue": "^2.1.3"
},
"devDependencies": {
"aliasify": "^2.1.0",
"browserify": "^13.1.1",
"budo": "^9.2.2",
"vueify": "^9.3.0"
},
"browserify": {
"transform": [
"vueify",
"aliasify"
]
},
"aliasify": {
"aliases": {
"vue": "vue/dist/vue.common.js"
}
}
}
使用像这样的简单视图模型设置,我可以看到引擎在工作:
// index.js
var Vue = require("vue");
new Vue({
el: '#mountpoint',
data: {
message: 'Hello Vue!'
}
});
html 文档如下:
<!DOCTYPE html>
<html>
<head>
<title>Sample vueify</title>
</head>
<bod>
<div id="mountpoint">
{{message}}
</div>
<script type="text/javascript" src="build.js"></script>
</bod>
</html>
但是,如果我尝试使用 .vue 文件和渲染函数,它不起作用:
// app.vue
<style>
.red {
color: #f00;
}
</style>
<template>
<h1 class="red">{{msg}}</h1>
</template>
<script>
export default {
data () {
return {
msg: 'Hello world!'
}
}
}
</script>
还有修改后的 index.js 文件:
var Vue = require("vue");
var App = require("./app.vue");
new Vue({
el: '#mountpoint',
render: function (createElement) {
return createElement(App)
}
});
然后它给了我以下输出:
Parsing file /home/sombriks/git/simple-vueify-setup/app.vue: 'import'
and 'export' may only appear at the top level (15:0)
欢迎任何帮助。
可以找到完整的示例代码here。
出于某种未知原因,如果我将 .vue 组件更改为这样,它将起作用:
// app.vue
<style>
.red {
color: #f00;
}
</style>
<template>
<h1 class="red">{{msg}}</h1>
</template>
<script>
module.exports = {
data: () => {
return {
msg: 'Hello world!'
}
}
}
</script>
它可能暂时解决了我的问题,但我仍然不明白为什么会这样。每个资源都使用脚本部分的现代语法记录 .vue 模板。
尝试安装几个 babel 包:
npm install babel-core babel-preset-es2015 babelify --save-dev`
将您的 browserify
配置更改为:
"browserify": {
"transform": [
"vueify",
"babelify",
"aliasify"
]
},
然后确保您的项目根目录中有一个 .babelrc
文件(与 package.json 相同的目录)。它的内容是:
{
"presets": ["es2015"]
}
我还没有测试别名,但没有它应该可以。
如果您想要一个更简单的选项来构建您自己的环境,请查看:https://github.com/vuejs/vue-cli browserify 高级设置附带 vueify 并编译 ES6
我正在使用带有 browserify 和 vueify 的简单 vue.js 设置。
按照之前的指导,我还添加了别名作为依赖项,以便使用模板引擎。这是我的 package.json 文件:
{
"name": "simple-vueify-setup",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "budo index.js:build.js --open --live"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"vue": "^2.1.3"
},
"devDependencies": {
"aliasify": "^2.1.0",
"browserify": "^13.1.1",
"budo": "^9.2.2",
"vueify": "^9.3.0"
},
"browserify": {
"transform": [
"vueify",
"aliasify"
]
},
"aliasify": {
"aliases": {
"vue": "vue/dist/vue.common.js"
}
}
}
使用像这样的简单视图模型设置,我可以看到引擎在工作:
// index.js
var Vue = require("vue");
new Vue({
el: '#mountpoint',
data: {
message: 'Hello Vue!'
}
});
html 文档如下:
<!DOCTYPE html>
<html>
<head>
<title>Sample vueify</title>
</head>
<bod>
<div id="mountpoint">
{{message}}
</div>
<script type="text/javascript" src="build.js"></script>
</bod>
</html>
但是,如果我尝试使用 .vue 文件和渲染函数,它不起作用:
// app.vue
<style>
.red {
color: #f00;
}
</style>
<template>
<h1 class="red">{{msg}}</h1>
</template>
<script>
export default {
data () {
return {
msg: 'Hello world!'
}
}
}
</script>
还有修改后的 index.js 文件:
var Vue = require("vue");
var App = require("./app.vue");
new Vue({
el: '#mountpoint',
render: function (createElement) {
return createElement(App)
}
});
然后它给了我以下输出:
Parsing file /home/sombriks/git/simple-vueify-setup/app.vue: 'import' and 'export' may only appear at the top level (15:0)
欢迎任何帮助。
可以找到完整的示例代码here。
出于某种未知原因,如果我将 .vue 组件更改为这样,它将起作用:
// app.vue
<style>
.red {
color: #f00;
}
</style>
<template>
<h1 class="red">{{msg}}</h1>
</template>
<script>
module.exports = {
data: () => {
return {
msg: 'Hello world!'
}
}
}
</script>
它可能暂时解决了我的问题,但我仍然不明白为什么会这样。每个资源都使用脚本部分的现代语法记录 .vue 模板。
尝试安装几个 babel 包:
npm install babel-core babel-preset-es2015 babelify --save-dev`
将您的 browserify
配置更改为:
"browserify": {
"transform": [
"vueify",
"babelify",
"aliasify"
]
},
然后确保您的项目根目录中有一个 .babelrc
文件(与 package.json 相同的目录)。它的内容是:
{
"presets": ["es2015"]
}
我还没有测试别名,但没有它应该可以。
如果您想要一个更简单的选项来构建您自己的环境,请查看:https://github.com/vuejs/vue-cli browserify 高级设置附带 vueify 并编译 ES6