【问题标题】:Vue: pug language has not been recognized in .vue templateVue:.vue 模板中无法识别 pug 语言
【发布时间】:2018-12-06 23:51:28
【问题描述】:

来自 Vue documentation

处理模板有点不同,因为大多数 webpack 模板加载器(例如 pug-loader)返回模板函数 一个已编译的 HTML 字符串。而不是使用 pug-loader,我们可以 安装原版哈巴狗。

TestComponent.vue

<template lang="pug">
  div
    h2 {{ message }}
</template>

<script>
  export default {
    data () {
      return {
        message: 'Done!!! Done...'
      }
    }
  }
</script>

ma​​in.js

import Vue from 'vue'
import TestComponent from './../components/TestComponent/TestComponent.vue'

new Vue({
  el: '#app',
  render: h => h(TestComponent)
});

错误:

NonErrorEmittedError: (Emitted value instead of an instance of Error) 
  Error compiling template:

  div
    h2 {{ message }}

  - Component template requires a root element, rather than just text.

使用的依赖版本:

  • “webpack”:“^4.7.0”
  • “vue”:“^2.5.16”
  • “vue-loader”:“^15.2.4”,
  • "vue-template-compiler": "^2.5.16",
  • “哈巴狗”:“^2.0.3”

【问题讨论】:

标签: javascript webpack vue.js vuejs2


【解决方案1】:

您需要设置 Webpack 以使用 Pug 语言加载器,否则您的模板将被解析为 HTML,并且您的模板确实为 HTML 没有根标记(围绕所有其他元素的单个 html 元素)。

您需要进行设置:https://www.npmjs.com/package/pug-loader

根据您可能还需要的评论:https://www.npmjs.com/package/pug-plain-loader

【讨论】:

  • @TakesiTokugawaYD 我有同样的问题,但是所有建议的加载器都安装了它们各自的规则似乎没有解决它。规则是否需要进入 vue 加载器测试下的“选项”?
  • @PeterT,没有。请参考this working config(对于 webpack 4.X.X)。
  • @TakesiTokugawaYD 啊,谢谢。我意识到我的问题是我使用的是 electron-webpack,并且每个 webpack 规则的自定义修改是每个模块的,所以我只将 pug 规则应用于 main webpack 条目而不是 renderer
猜你喜欢
  • 1970-01-01
  • 2021-05-20
  • 2016-08-23
  • 1970-01-01
  • 2019-04-20
  • 2018-06-30
  • 2016-11-03
  • 2018-07-13
  • 2021-01-21
相关资源
最近更新 更多