将markdown文件作为变量读取并将变量转换为json

o0lyfsai  于 2022-11-19  发布在  其他
关注(0)|答案(3)|浏览(268)

我试图在我的API中将一个本地md文件转换为json,但我得到语法错误。
问题似乎是当我读取文件并将其存储为字符串变量时,它被存储为没有md 2 json工作所需的新行。当我控制台记录变量时,它被逐行打印出来,看起来就像md文件一样,但我不能转换它。当我将其作为respone发送并打印在我的页面上时,它打印出来:

# Air ## The second largest heading ###### The smallest heading

但原始md文件看起来是这样的:

# Air

## The second largest heading

###### The smallest heading

这是我曾经尝试过的:

const md2json = require('md-2-json');
const fs = require('fs');

router.get('/page', (req, res) => {
    let content = fs.readFileSync('directory/file.md','utf8')
    console.log(content)
    res.send(content)
})

有没有什么方法可以让它工作,或者有没有其他更好的方法?我看到了一些关于XMLHttpRequest的帖子,但是没有真正让它工作。
//* 编辑:我现在发现我忘记了包括转换;下面是使用md 2 json时应该看到的样子:

router.get('/page', (req, res) => {
    let content = fs.readFileSync('directory/file.md','utf8')
    console.log(content)
    let newContent = md2json.parse(content)
    console.log(newContent)
    res.send(newContent)
})

//* 编辑2:缺少\n似乎不是问题所在,因为这是可行的:

let mdInput = `# Air ## The second largest heading ###### The smallest heading`

router.get('/page', (req, res) => {
    let newContent = md2json.parse(mdInput)
    console.log(newContent)
    res.send(newContent)

但这并不意味着:

let mdInput = `
# Air

## The second largest heading
 
##### The smallest heading
`

router.get('/page', (req, res) => {
    let newContent = md2json.parse(mdInput)
    console.log(newContent)
    res.send(newContent)
5lhxktic

5lhxktic1#

我明白了:因为这个lib似乎允许h(n)只存在于h(n-1)中,所以h6不能直接存在于h2中,所以这应该能解决你的问题:
第一个

8ehkhllq

8ehkhllq2#

页面将所有内容打印在一行中,因为html默认情况下忽略\n作为换行符

# Air

## The second largest heading

###### The smallest heading

您必须使用pre标签将文字换行

<pre>
# Air

## The second largest heading

###### The smallest heading
</pre>

您也可以使用white-space: pre css属性或将\n替换为<br>

bqucvtff

bqucvtff3#

也许你需要用一点html来发送它:

const md2json = require('md-2-json');
const fs = require('fs');

router.get('/page', (req, res) => {
    const content = fs.readFileSync('directory/file.md','utf8').toString()
    let newContent = md2json.parse(content)
    res.end(`<!DOCTYPE html><html><head></head><body>${ newContent }</body></html>`)
})

相关问题