【发布时间】:2021-05-07 22:48:39
【问题描述】:
我在将 vue2-editor(基于 quill)与 highlight.js 连接时遇到问题
无论我做什么,我都会收到一条错误消息:
语法模块需要 highlight.js。请在 Quill 之前的页面上包含库。
如果它有任何改变,我会使用 nuxt。
我尝试在脚本标签的开头添加这一行:
import hljs from'highlightjs';
所以它看起来像:
<script>
import hljs from'highlightjs';
export default {
middleware: 'hasPermissions',
permissions: [ 'createPosts' ],
...
}
</script>
我需要 vue2-editor 的插件:
import Vue from'vue';
import VueEditor from'vue2-editor';
Vue.use(VueEditor);
我页面中的 VueEditor 组件:
<VueEditor
class="my-4"
v-model="content"
:editor-options="{ modules: { syntax: true } }"
placeholder="Post content" />
编辑: 我尝试创建自己的组件,但显示相同的错误:
<template>
<v-layout
row
wrap>
<v-flex xs12>
<div ref="editor" />
</v-flex>
</v-layout>
</template>
<script>
import Quill from'quill';
export default {
data() {
return {
editor: null
};
},
mounted() {
window.hljs = require('highlight.js');
this.editor = new Quill(this.$refs.editor, {
modules: {
toolbar: [
[{ header: [ 1, 2, 3, 4, false ]}],
[ 'bold', 'italic', 'underline' ]
],
syntax: true
},
theme: 'snow',
formats: [ 'bold', 'underline', 'header', 'italic' ]
});
this.editor.root.innerHTML = this.value;
}
};
</script>
我可以在浏览器的开发工具中的控制台中成功打印 hljs。怎么了?
【问题讨论】:
-
我在使用带角度的羽毛笔时遇到了类似的问题。问题是 quill 总是在 highlight.js 之前被加载,或者 highlight.js 从来没有在 quill 可以访问它的范围内。最后,我最终在根 html 中加载了 highlight.js(在我的例子中是 index.html,其中注入了 angular)。您可以尝试一下,直到找到更好的解决方案。
-
如果我用 Quill 和 HLJS 注册自己的组件怎么办?也许我可以避免使用 vue2-editor
-
你安装highlightjs了吗?
标签: javascript node.js quill highlight.js