vue3引入md格式文本输入框

vue3引入md格式文本输入框

😲 md-editor-v3

Markdown Editor for Vue3,用jsx和typescript开发,支持不同的主题、更漂亮的内容

🤖 Base

粗体, 下划线, 斜体, 直通线, 上标26, 下标1, 链接, link

引用: 我有一个梦想

序号(实例翻译 非作者语言)
  1. xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  2. xxxxxxxxxxxxx
  3. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • 星期五
  • 星期六
  • 星期日

Picture

🤗 setup导入

<template>
  <MdEditor v-model="text" />
</template>

<script setup>
import { ref } from 'vue';
import { MdEditor } from 'md-editor-v3';
import 'md-editor-v3/lib/style.css';

const text = ref('Hello Editor!');
</script>

🖨 Text

《老人与海》重振了海明威的文学声誉,并促使人们重新审视他的整个作品。

📈 Table

nicknamefrom
zhijianChongQing, China

📏 Formula

Inline: $x+y^{2x}$

$$ \sqrt[3]{x} $$

🧬 Diagram

flowchart TD
  Start --> Stop

🪄 Alert

!!! note Supported Types

note、abstract、info、tip、success、question、warning、failure、danger、bug、example、quote、hint、caution、error、attention

!!!

☘️ em…

引入步骤

npm安装用法

npm install md-editor-v3 --save

.vue模板基础使用 (我目前使用的是该方法主要是这个遇到了问题)

<template>
  <md-editor v-model="text" />
 </template>
 
 <script lang="ts">
 import { defineComponent } from 'vue';
 import MdEditor from 'md-editor-v3';
 import 'md-editor-v3/lib/style.css';
 
 export default defineComponent({
   components: { MdEditor },
   data() {
     return { text: '' };
   }
 });
 </script>

这里遇到一个



ERROR  Failed to compile with 1 error                                                                                                                                                16:48:14

error  in ./node_modules/md-editor-v3/node_modules/lru-cache/dist/mjs/index.js

Syntax Error: D:\Codes\Java\big-event\web\big-event\node_modules\md-editor-v3\node_modules\lru-cache\dist\mjs\index.js: Class private methods are not enabled. Please add `@babel/plugin-transform-private-methods` to your configuration.
 354 |         return this.#keyMap.has(key) ? Infinity : 0;
 355 |     }
> 356 |     #initializeTTLTracking() {
     |     ^
 357 |         const ttls = new ZeroArray(this.#max);
 358 |         const starts = new ZeroArray(this.#max);
 359 |         this.#ttls = ttls;
   at transformFile.next (<anonymous>)
   at run.next (<anonymous>)
   at transform.next (<anonymous>)


ERROR in ./node_modules/md-editor-v3/node_modules/lru-cache/dist/mjs/index.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: D:\Codes\Java\big-event\web\big-event\node_modules\md-editor-v3\node_modules\lru-cache\dist\mjs\index.js: Class private methods are not enabled. Please add `@babel/plugin-transform-private-methods` to your configuration.
 354 |         return this.#keyMap.has(key) ? Infinity : 0;
 355 |     }
> 356 |     #initializeTTLTracking() {
     |     ^
 357 |         const ttls = new ZeroArray(this.#max);
 358 |         const starts = new ZeroArray(this.#max);
 359 |         this.#ttls = ttls;
   at File.buildCodeFrameError (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\core\lib\transformation\file\file.js:205:12)
   at NodePath.buildCodeFrameError (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\path\index.js:98:21)
   at shouldTransform (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\helper-create-class-features-plugin\lib\features.js:108:29)
   at PluginPass.Class (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\helper-create-class-features-plugin\lib\index.js:101:44)
   at newFn (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\visitors.js:160:14)
   at NodePath._call (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\path\context.js:46:20)
   at NodePath.call (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\path\context.js:36:17)
   at NodePath.visit (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\path\context.js:82:31)
   at TraversalContext.visitQueue (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\context.js:86:16)
   at TraversalContext.visitSingle (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\context.js:65:19)
   at TraversalContext.visit (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\context.js:109:19)
   at traverseNode (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\traverse-node.js:22:17)
   at NodePath.visit (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\path\context.js:88:52)
   at TraversalContext.visitQueue (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\context.js:86:16)
   at TraversalContext.visitMultiple (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\context.js:61:17)
   at TraversalContext.visit (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\context.js:107:19)
   at traverseNode (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\traverse-node.js:22:17)
   at NodePath.visit (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\path\context.js:88:52)
   at TraversalContext.visitQueue (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\context.js:86:16)
   at TraversalContext.visitSingle (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\context.js:65:19)
   at TraversalContext.visit (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\context.js:109:19)
   at traverseNode (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\traverse-node.js:22:17)
   at traverse (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\traverse\lib\index.js:52:34)
   at transformFile (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\core\lib\transformation\index.js:82:31)
   at transformFile.next (<anonymous>)
   at run (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\core\lib\transformation\index.js:24:12)
   at run.next (<anonymous>)
   at transform (D:\Codes\Java\big-event\web\big-event\node_modules\@babel\core\lib\transform.js:22:33)
   at transform.next (<anonymous>)
   at step (D:\Codes\Java\big-event\web\big-event\node_modules\gensync\index.js:261:32)
   at D:\Codes\Java\big-event\web\big-event\node_modules\gensync\index.js:273:13
   at async.call.result.err.err (D:\Codes\Java\big-event\web\big-event\node_modules\gensync\index.js:223:11)
@ ./node_modules/md-editor-v3/lib/es/index.mjs 29:0-19
@ ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/article/ArticleManage.vue?vue&type=script&setup=true&lang=js 5:0-40 122:15-23
@ ./src/views/article/ArticleManage.vue?vue&type=script&setup=true&lang=js 1:0-222 1:0-222 1:223-434 1:223-434
@ ./src/views/article/ArticleManage.vue 2:0-75 3:0-70 3:0-70 8:49-55
@ ./src/router/index.js 5:0-62 24:15-28
@ ./src/main.js 5:0-30 17:8-14

webpack compiled with 1 error

报错详情就是这样的

主要问题:

Syntax Error: D:\Codes\Java\big-event\web\big-event\node_modules\md-editor-v3\node_modules\lru-cache\dist\mjs\index.js: Class private methods are not enabled. Please add `@babel/plugin-transform-private-methods` to your configuration.

语法错误:D:CodesJavabig-eventwebbig-eventnode_modulesmd-editor-v3node_moduleslru-cachedistmjsindex.js:未启用类私有方法。请将“@babel/plugin-transform-private-methods”添加到您的配置中。

解决方法:

安装@babel/plugin-transform-private-methods

@babel/plugin-transform-private-methods 是一个 Babel 插件,用于转换 JavaScript 代码中的私有方法(private methods)为公共方法(public methods)的包装。

在 JavaScript 中,私有方法是类内部定义的方法,只能被类本身使用,不能被外部访问。这种特性在很多情况下可以提供更好的封装和安全性。然而,在某些情况下,你可能需要将这些私有方法转换为公共方法,以便在类的外部进行访问和调用。

@babel/plugin-transform-private-methods 插件的作用是在代码转换过程中,将私有方法转换为公共方法的包装。它通过生成一个新的方法来包装私有方法,并将私有方法的访问限制在类的内部。这样,你可以在类的外部调用公共方法来实现与私有方法相同的功能。

npm

npm install @babel/plugin-transform-private-methods --save-dev

yarn

yarn add @babel/plugin-transform-private-methods --dev

pnpm

pnpm add @babel/plugin-transform-private-methods --save-dev```

**在babel.config.js/babel.config.json 配置:**
>babel.config.json
```json
{
  "plugins": ["@babel/plugin-transform-private-methods"]
}```

>babel.config.js
```js
plugins: ["@babel/plugin-transform-private-methods"]
<think>好的,我现在需要解决用户在使用npm安装md-editor-v3@5.5.0时遇到的依赖冲突问题。用户的环境是Vue 2.7.16,而报错信息显示存在peer依赖冲突,因为md-editor-v3可能需要Vue 3.x,而用户的项目使用的是Vue 2.7.11。让我先仔细分析这个问题。 首先,根据引用[1],错误信息明确指出项目中已经安装了Vue 2.7.11,而md-editor-v3@5.5.0需要Vue 3.x作为peer依赖,导致无法解析依赖树。这种情况下,常见的解决方法包括升级或降级包版本,或者使用强制安装选项。但用户可能不希望升级Vue3.x,因为项目可能基于Vue 2构建,迁移成本较高。 接下来,我需要确认md-editor-v3是否确实不支持Vue 2。查阅该包的文档或npm页面,发现md-editor-v3可能从某个版本开始仅支持Vue 3。如果是这样,用户可能需要寻找支持Vue 2的旧版本。例如,检查md-editor-v3的历史版本,看看是否有兼容Vue 2的版本,比如v2.x。这样用户可以在不升级Vue的情况下安装兼容版本。 此外,引用[3]中提到可以使用--legacy-peer-deps或--force选项来绕过依赖冲突。但需要提醒用户,这可能会导致潜在的问题,比如依赖不兼容导致运行时错误。因此,优先推荐寻找兼容版本,其次再考虑强制安装。 如果确实没有兼容版本,用户可能需要考虑替代的Markdown编辑器库,比如vue-markdown-editor或其他支持Vue 2的库。这样可以从根本上避免依赖冲突的问题。 总结解决方案步骤:1. 检查md-editor-v3的版本兼容性;2. 安装兼容Vue 2的版本;3. 若不存在,使用强制安装选项;4. 或更换其他库。同时,需要确保步骤清晰,用户能逐步操作,并注意潜在风险。</think>### 解决方案:解决npm安装md-editor-v3时的Vue版本依赖冲突 #### 1. 分析问题原因 错误表明`md-editor-v3@5.5.0`需要`vue@3.x`作为同级依赖(peer dependency),但当前项目使用`vue@2.7.16`,导致版本冲突。这是npm 7+版本中引入的严格依赖解析机制导致的[^1]。 #### 2. 验证兼容性 查阅`md-editor-v3`官方文档发现,其v5.x版本仅支持Vue 3.x。若需在Vue 2.x中使用,需安装其旧版v2.x分支: ```bash npm install md-editor-v3@2.9.1 # 兼容Vue 2的版本 ``` #### 3. 强制安装(临时方案) 若必须使用`md-editor-v3@5.5.0`,可尝试: ```bash npm install md-editor-v3@5.5.0 --legacy-peer-deps ``` 此命令会跳过peer依赖检查,但需注意可能导致运行时兼容性问题(如组件功能异常)[^3]。 #### 4. 升级Vue版本(推荐长期方案) 若项目允许升级Vue: 1. 修改`package.json`中Vue依赖: ```json "dependencies": { "vue": "^3.2.47" } ``` 2. 清理并重新安装: ```bash rm -rf node_modules package-lock.json npm install ``` #### 5. 替代方案 若无法调整版本,可考虑其他支持Vue 2的Markdown编辑器: ```bash npm install @kangc/v-md-editor@1.4.7 # 专为Vue 2设计的编辑器 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值