gpt4 book ai didi

javascript - 在服务器重新加载时,将 CodeMirror 与 Vuejs/Nuxtjs 一起使用会导致错误 'CodeMirror' is not defined

转载 作者:行者123 更新时间:2023-12-04 14:02:59 27 4
gpt4 key购买 nike

我正在将 CodeMirror 实现到我的 Nuxtjs/Vuejs 应用程序中的文本区域之一。我想根据 XML 美化 textarea

有时 CodeMirror 工作正常,但有时当我重新加载页面时出现错误:

Test.vue
33:18 error 'CodeMirror' is not defined no-under

所以最初它工作得很好但是当我尝试对项目中的任何文件进行一些更改并且当 Nuxtjs/Vuejs 服务器再次重新加载以合并新更改时我得到错误 错误“CodeMirror”未定义

我不明白为什么我有时会收到错误,而其他时候却没有收到。因为我已经添加了所需的 CDN 并完成了各种答案和文章中提到的步骤,所以我希望它根本不会抛出错误。有人可以帮我解决这个问题吗?

遵循的步骤:

  1. 将 CDN 添加到我的 nuxt-config.js:脚本:
    script: [
{
src:"text/javascript",
src:"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.32.0/codemirror.min.js"
},
{
src:"text/javascript",
src:"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.32.0/mode/xml/xml.min.js"
}
],

CSS:

{
rel: "stylesheet",
href:"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.63.1/codemirror.min.css"
}

以下是我的Test.vue:

<template>
<div>
<div class="row">
<div class="col-md-5">
<div class="row">
<div class="col-md-12">
<textarea
id="test"
v-model="xmlInput"
class="form-control"
placeholder="XML Document"
spellcheck="false"
data-gramm="false"
@input="convertToJSON()"
/>
</div>
</div>
</div>
</div>
</div>
</template>

<script>
export default {
data () {
return {
xmlInput: ''
}
},
methods: {
convertToJSON () {
console.log('ONE')
const cm = CodeMirror.fromTextArea(document.getElementById('test'), {
mode: 'application/xml',
lineNumbers: true,
matchBrackets: true,
styleActiveLine: true,
lineWrapping: true,
tabSize: 2,
value: 'console.log("Hello, World");'
})
cm.setSize(500, 500)
}
}
}
</script>

<style scoped>
textarea {
height: 78vh;
white-space: nowrap;
resize: both;
}

::-webkit-input-placeholder {
color: #f1948a;
text-align: center;
}
</style>

有人可以帮我解决这个问题吗?我在这里做错了什么?任何建议将不胜感激。提前致谢。

用于重新创建问题的沙盒: https://codesandbox.io/s/boring-water-g14zd?file=/pages/index.vue

沙盒中的错误: enter image description here

最佳答案

您可以执行以下操作以使其正常工作。

  • 首先,您不必在每次输入更改时都重新初始化 codemirror 编辑器 @input="convertToJSON()"
  • 您可以在安装组件时初始化编辑器。

代码

<template>
<div>
<div class="row">
XML Dat
<div class="col-md-5">
<div class="row">
<div class="col-md-12">
<textarea
id="test"
v-model="xmlInput"
class="form-control"
placeholder="XML Document"
spellcheck="false"
data-gramm="false"
/>
</div>
</div>
</div>
</div>
</div>
</template>
export default {
data() {
return {
xmlInput: "",
};
},
mounted() {
// https://stackoverflow.com/questions/53981928/using-codemirror-cannot-set-property-modeoption-of-undefined
const editor = document.getElementById("test");
editor.value = "";
/** eslint-next-line */
const cm = CodeMirror.fromTextArea(editor, {
mode: "application/xml",
lineNumbers: true,
matchBrackets: true,
styleActiveLine: true,
lineWrapping: true,
tabSize: 2,
value: 'console.log("Hello, World");',
});

cm.setSize(500, 500);
},
};

这是工作代码和框链接 - https://codesandbox.io/s/falling-cdn-5o0t6?file=/pages/index.vue

如果你想使用 codemirror npm 模块,这里是工作 codesandbox 的链接 - https://codesandbox.io/s/boring-water-g14zd?file=/pages/index.vue

关于javascript - 在服务器重新加载时,将 CodeMirror 与 Vuejs/Nuxtjs 一起使用会导致错误 'CodeMirror' is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69430941/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com