Angular 15项目导入marked模块报错求助
解决Angular 15中marked模块编译报错TS1383的问题
问题原因
你遇到的TS1383: Only named exports may use 'export type'错误,是因为marked v10及以上版本采用了TypeScript 4.9+才支持的export type *语法,而Angular 15配套的TypeScript版本为4.8.x,版本不兼容导致编译失败。
解决方案
1. 降级marked至兼容版本
卸载当前安装的marked,安装v9.x系列版本(完全适配TS 4.8):
npm uninstall marked npm install marked@^9.0.0
同步更新@types/marked到对应版本:
npm uninstall @types/marked npm install --save-dev @types/marked@^9.0.0
2. 修正管道代码
marked v9的API调用方式和v10有区别,调整导入与逻辑实现,同时加入安全处理避免Angular过滤HTML:
import { Pipe, PipeTransform } from '@angular/core'; import { marked } from 'marked'; import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; @Pipe({ name: 'mdToHtml' }) export class MdToHtmlPipe implements PipeTransform { constructor(private sanitizer: DomSanitizer) {} transform(value: string): SafeHtml { if (!value || value.length === 0) { return value; } const htmlContent = marked(value); return this.sanitizer.bypassSecurityTrustHtml(htmlContent); } }
补充:Angular默认会拦截未标记为安全的HTML内容,使用
DomSanitizer可以让框架信任转换后的结果,确保innerHTML绑定正常显示。
3. 验证修复效果
重新执行ng serve,此时编译流程可正常完成,管道也能正确将Markdown文本转换为HTML内容。
内容的提问来源于stack exchange,提问作者jlapuente
相关产品推荐
相关产品推荐

