【052】Failed to mount component: template or render function not defined. 错误的解决方法

8 篇文章 0 订阅

Vue.js 2 遇到 vue.runtime.common.js?d43f:511 [Vue warn]: Failed to mount component: template or render function not defined. (found in root instance) 错误的解决方法。

问题描述

先说一下每个文件的内容。

package.json:

{
  "name": "test-typeof-vue",
  "version": "0.0.1",
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "dev": "cross-env NODE_ENV=development webpack-dev-server --port 28080 --open --inline --hot",
    "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
  },
  "devDependencies": {
    "babel-core": "6.18.2",
    "babel-loader": "6.2.8",
    "babel-preset-es2015": "6.18.0",
    "cross-env": "3.1.3",
    "css-loader": "0.26.0",
    "file-loader": "0.9.0",
    "style-loader": "0.13.1",
    "vue-loader": "9.9.5",
    "webpack": "2.1.0-beta.27",
    "webpack-dev-server": "2.1.0-beta.11"
  },
  "dependencies": {
    "vue": "2.1.3"
  }
}

webpack.config.js:

var path = require('path')
var webpack = require('webpack')

module.exports = {
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    filename: 'build.js'
  },
  module: {
    rules: [
      {
          test: /\.css$/,
          use: [
              {
                  loader: 'style-loader'
              }, {
                  loader: 'css-loader'
              }
          ]
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          // vue-loader options go here
        }
      },
      {
         test: /\.js$/,
         loader: 'babel-loader',
         exclude: /node_modules/
      },
      {
        test: /\.(png|jpg|gif|svg)$/,
        loader: 'file-loader',
        options: {
          name: '[name].[ext]?[hash]'
        }
      }
    ]
  },
  resolve: {
    alias: {
      
    }
  },
  devServer: {
    historyApiFallback: true,
    noInfo: true
  },
  devtool: '#eval-source-map',
  plugins: [
  ]
}

if (process.env.NODE_ENV === 'production') {
  module.exports.devtool = '#source-map'
  // http://vue-loader.vuejs.org/en/workflow/production.html
  module.exports.plugins = (module.exports.plugins || []).concat([
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: '"production"'
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false
      }
    }),
    new webpack.LoaderOptionsPlugin({
      minimize: true
    })
  ])
}

index.html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>bmsclient</title>
    
        
  </head>
  <body>
    <div id="app"></div>
    <h1>aaaaaaaaaaaaaaaaaaaa</h1>

    <script src="/dist/build.js"></script>
  </body>
</html>

main.js:

import Vue from "vue";
new Vue({
    el: "#app"
});

最后在命令行项目文件夹下执行命令 npm run dev, 服务器可以正常启动,但是浏览器的控制台打印错误信息:

vue.runtime.common.js?d43f:511 [Vue warn]: Failed to mount component: template or render function not defined.
(found in root instance)

解决方法

import Vue from “vue”; 默认引入的文件是 vue/dist/vue.runtime.common.js。这个读者可以在node_modules/vue/package.json文件里面查到。package文件的main选项指定了默认执行的文件。关键的package.json代码如下:

"name": "vue",
"version": "2.1.3",
"description": "Reactive, component-oriented view layer for modern web interfaces.",
"main": "dist/vue.runtime.common.js",

读者可以在github上阅读vue.js 2.1.3的文档。文档位置在vue/dist/README.md。这个文档说明了 vue.runtime.common.js 文件不含编译器,因此不支持template选项。我们使用Webpack和template选项的话,可以使用vue.common.js文件。vue.common.js文件包含编译器。所以main.js中把

import Vue from "vue";

改写成

import Vue from "vue/dist/vue.common.js";

就可以了。而且可以正常使用 vue 文件。

下面是在上面的代码基础上,加上的使用vue文件的例子:

index.html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8"> <title>bmsclient</title>
  </head>
  <body>
    <div id="app">
      <hello></hello>
    </div>
    <h1>aaaaaaaaaaaaaaaaaaaa</h1>
    <script src="/dist/build.js"></script>
  </body>
</html>

main.js

import Vue from "vue/dist/vue.common.js";
import hello from "./hello.vue"
new Vue({
    el: "#app",
    components:{
        hello
    }
});


hello.vue

<template>
  <div>
    <h1>Hello</h1>
    <span>{{zca}}</span>
  </div>
</template>
<script>
export default {
  data:function(){
    return {
      zca: "zca"
    }
  },
  mounted:function() {
  }
}
</script>

<style>
</style>

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
引用中的解决办法可以帮助你解决这个问题。报错信息"Failed to mount component: template or render function not defined"通常是由于组件没有定义模板或渲染函数导致的。 首先,你可以检查一下在新建的组件中是否正确地定义了模板或渲染函数。确保你的组件文件中包含了正确的模板定义,比如使用了template标签,并且模板中的内容正确。 其次,你还可以检查一下在router/index.js文件中是否正确地引入了新建的组件。确保在引入组件时使用了正确的路径和文件名,并且在引入时添加了文件后缀名.vue。 最后,还要确保在新建的组件文件里添加了组件内容,即使没有具体的内容也要确保添加了该组件。这样可以避免出现该报错。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [vue 报错Failed to mount component: template or render function not defined.的解决方法](https://blog.csdn.net/to_the_Future/article/details/122973603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [解决koa2 ctx.render is not a function报错问题](https://download.csdn.net/download/weixin_38621272/12954526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值