我是vue.js和webpack的新手,我在编译vue文件时遇到了问题。
我使用Spring启动和pebble作为模板技术,我想生成一个.js文件并将其包含在我的index.pebble中
这是我的webpack.config.js
module.exports = {
// This is the "main" file which should include all other modules
entry: './src/main/resources/static/app/main.js',
// Where should the compiled file go?
output: {
// To the `dist` folder
path: './src/main/resources/static/lib',
// With the filename `build.js` so it's dist/build.js
filename: 'build.js'
},
module: {
// Special compilation rules
loaders: [
{
// Ask webpack to check: If this file ends with .js, then apply some transforms
test: /\.js$/,
// Transform it with babel
loader: 'babel',
// don't transform node_modules folder (which don't need to be compiled)
exclude: /node_modules/
},
{
test: /\.vue$/,
loader: 'vue'
}
]
},
vue: {
loaders: {
js: "babel-loader?presets[]=es2015,presets[]=stage-2"
}
},
}
我的文件babelrc:
{
"presets": ["es2015", "stage-0"],
"plugins": ["transform-runtime"]
}
我的文件package.json
{
"name": "xxxx",
"version": "1.0.0",
"description": "TODO",
"scripts": {
"watch-build": "echo \"not available\" && exit 1",
"build": "npm install",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "LMFR",
"readmeFilename": "README.md",
"devDependencies": {
"babel-core": "^6.1.2",
"babel-loader": "^6.1.0",
"babel-preset-latest": "^6.16.0",
"babel-preset-stage-2": "^6.18.0",
"babel-runtime": "^5.8.0",
"webpack": "^1.12.2",
"css-loader": "^0.23.0",
"style-loader": "^0.13.0",
"vue-loader": "^7.3.0",
"vue-html-loader": "^1.0.0"
},
"dependencies": {
"vue": "^2.3.2"
}
}
这是我的main.js
从' vue'导入Vue //从' ./ app.vue'
导入应用new Vue({
el: '#app',
template: '<p>haaaa</p>'
})
我面临的错误:
build.js:494 [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.
答案 0 :(得分:5)
以webpack-simple vue-cli模板为指导,我相信你错过了依赖:
https://github.com/vuejs-templates/webpack-simple/blob/master/template/package.json#L26
"vue-template-compiler": "^2.2.1",
答案 1 :(得分:0)
如果只有运行时构建,则不能使用template属性,而必须使用render函数或包含模板编译器。
尝试将main.js更改为
import Vue from 'vue' //import App from './app.vue'
new Vue({
el: '#app',
render: function(createElement) {
return createElement(
'p',
'haaaa'
)
}
})
JsFiddle工作小提琴
使用Webpack时.vue
文件将能够从<template></template>
标签编译,但主Vue根必须使用渲染函数,通常看起来像
import Vue from 'vue'
import App from './app.vue'
new Vue({
el: '#app',
render: function(createElement) {
return createElement(
App
)
}
})