Vue:.vue 模板中无法识别 pug 语言

Posted

技术标签:

【中文标题】Vue:.vue 模板中无法识别 pug 语言【英文标题】:Vue: pug language has not been recognized in .vue template 【发布时间】: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”

【问题讨论】:

安装pug-loader:github.com/pugjs/pug-loader 它在the documentation 中说你需要使用pug-plain-loader 注意:您提供的documentation link 用于 vue-loader v14,但您使用的是 v15。 【参考方案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

以上是关于Vue:.vue 模板中无法识别 pug 语言的主要内容,如果未能解决你的问题,请参考以下文章

vue安装pug

在 Nuxt、Vue、jest 和 Vuetify 中为项目编写单元测试

我的编辑器无法识别 laravel 项目中扩展名为 .vue "ChatApp.vue" 的组件

Pug和Parcel无法使用动态本地人

在vue中使用pug

无法在模板 vue 中插入组件