Node.js 使用节点标记模块渲染标记时输出不一致

Node.js 使用节点标记模块渲染标记时输出不一致,node.js,express,markdown,Node.js,Express,Markdown,我正在尝试用express编写一个控制器,它会对论坛帖子进行一些标记并返回一些HTML 我在命令行中获得了预期的行为: > var md = require('node-markdown').Markdown; undefined > md("\n\ndon't mind me\n====") '<h1>don\'t mind me</h1>' 我收到以下答复: <p>\n\ndon't mind me\n====</p> 这是我的

我正在尝试用express编写一个控制器,它会对论坛帖子进行一些标记并返回一些HTML

我在命令行中获得了预期的行为:

> var md = require('node-markdown').Markdown;
undefined
> md("\n\ndon't mind me\n====")
'<h1>don\'t mind me</h1>'
我收到以下答复:

<p>\n\ndon't mind me\n====</p>
这是我的控制器代码:

app.post('/render_markdown', function (req, res) {
    res.header('Access-Control-Allow-Origin', '*');
            res.header('Content-Type', 'application/json');
    var raw = req.body['raw'];
    res.send({ html: parseMarkdown(raw)});
});

有人知道这里发生了什么吗?在将输入传递到Markdown函数时,我尝试了转义和取消转义,但似乎没有任何帮助。

我认为您需要发送一个包含json的字符串,而不是响应中的实际对象。试试这个:

res.send(JSON.stringify({ html: parseMarkdown(raw)});

如果执行console.lograw,它会输出什么?它会输出预期的原始字符串:\n\n不介意我\n===似乎找不到此代码的任何问题。parseMarkdown函数是否在同一个文件中,或者您是否以某种方式导出它?它在同一个文件中。我想知道我使用express的版本是否有一些unicode字符通过或其他什么。可能是…它适用于其他常规标记测试吗?问题是,它没有失败发送消息-对象在客户端可用,我可以通过对象中的键查找字符串,只是在响应的文本中,它没有正确的标记。它确实有一些标记-包装标记-但是它无法将\n====解析为h1标记的指示。好吧,那是我的错误…我不知道您可以通过这种方式发送JSON。很奇怪,如果您说REPL命令给出了正确的结果,并且字符串在服务器中是相同的,那么解析方法就没有理由不在服务器上工作。您能否确认它对其他常规标记字符串(如hi或**测试**)有效?
app.post('/render_markdown', function (req, res) {
    res.header('Access-Control-Allow-Origin', '*');
            res.header('Content-Type', 'application/json');
    var raw = req.body['raw'];
    res.send({ html: parseMarkdown(raw)});
});
res.send(JSON.stringify({ html: parseMarkdown(raw)});