如何使用remark将markdown解析为json

Sim*_*n H 4 node.js remarkjs

备注站点有一个指向 AST 浏览器的链接,用于备注输出 - https://astexplorer.net/#/gist/0a92bbf654aca4fdfb3f139254cf0bad/ffe102014c188434c027e43661dbe6ec30042ee2

我找不到的是如何解析 AST - 所有示例都转换为 HTML。

我有这个代码


import {unified} from 'unified'
import remarkParse from 'remark-parse'
import remarkGfm from 'remark-gfm' // git flavoured markdown

const content = `
# My header

This is my content

 - abc
 - def
 
`;

unified()
    .use(remarkParse)
    .use(remarkGfm)
    .process('# Hi\n\n*Hello*, world!')
    .then((file) => {
        console.log(String(file))
    })
Run Code Online (Sandbox Code Playgroud)

但我在这里遇到了一些错误,我不知道如何解决


import {unified} from 'unified'
import remarkParse from 'remark-parse'
import remarkGfm from 'remark-gfm' // git flavoured markdown

const content = `
# My header

This is my content

 - abc
 - def
 
`;

unified()
    .use(remarkParse)
    .use(remarkGfm)
    .process('# Hi\n\n*Hello*, world!')
    .then((file) => {
        console.log(String(file))
    })
Run Code Online (Sandbox Code Playgroud)

Sco*_*ker 6

你几乎已经拥有了。下面我简化了您的代码,删除了未使用和不必要的部分。

import {unified} from 'unified'
import remarkParse from 'remark-parse'

let myResult = unified()
    .use(remarkParse)
    .parse('# Hi\n\n*Hello*, world!');

console.log(JSON.stringify(myResult, null, "   "));
Run Code Online (Sandbox Code Playgroud)

根据ChristianMurphy 的 GitHub Q/A:

Unified.process() 将尝试获取文本,将其转换为 AST,然后再转换回文本。

出于您声明的目的,“ ...解析为 AST [JSON]”,您不需要或不希望无法完成的“全周期过程” 。您只想解析输入并将语法树 (AST) 作为 JSON 发出。这里的错误是因为,在解析您的输入(markdown 字符串)并将其转换为语法树(AST)之后,然后尝试将其“编译”为某种输出格式。但是,您还没有提供编译器。但是,据我了解您的帖子,您不需要或不想将语法树编译成另一种输出(语言)。因此,从 更改为并将生成的语法树作为 JSON 发出。unified.process()TypeError: Cannot 'process' without 'Compiler'process()process()parse()