gpt4 book ai didi

node.js - 使用 express 和 marked 返回呈现的 Markdown

转载 作者:搜寻专家 更新时间:2023-10-31 22:22:47 26 4
gpt4 key购买 nike

因此,我正在运行一个小型测试应用程序,以在访问路由时以 html 格式返回 markdown 文件的内容。我正在使用标记来呈现 Markdown ( https://github.com/chjj/marked )。

这是我目前所拥有的 -

app.get('/test', function(req, res) {
var path = __dirname + '/markdown/test.md'
var file = fs.readFile(path, 'utf8', function(err, data) {
if(err) {
console.log(err)
}
return data.toString()
})
res.send(marked(file))
})

当我导航到 localhost:3000 时,我得到了 -

类型错误:无法调用未定义的方法“替换”请报告给https://github.com/chij/marked .

我相当确定我正在尝试发送一个字符串,并且 res.send('Hello World!') 工作正常。抱歉,我对 Node 和 Express 都不熟悉,所以我还在想办法。非常感谢任何帮助。

最佳答案

如果你想把文件的数据赋给一个变量,你应该试试fs.readFileSync()方法。

同步解决方案

app.get('/test', function(req, res) {
var path = __dirname + '/markdown/test.md';
var file = fs.readFileSync(path, 'utf8');
res.send(marked(file.toString()));
});

异步解决方案

app.get('/test', function(req, res) {
var path = __dirname + '/markdown/test.md';
fs.readFile(path, 'utf8', function(err, data) {
if(err) {
console.log(err);
}
res.send(marked(data.toString()));
});
});

promise 的解决方案

var Promise = require('bluebird'); // Require 'bluebird' in your package.json file, and run npm install.
var fs = require('fs');
var path = require('path');
Promise.promisifyAll(fs);

app.get('/test', function (req, res) {
fs.readFileAsync(path.join(__dirname, '/markdown/test.md')).then(function(val) {
res.send(marked(val.toString()));
});
});

因为异步编程会进行下一步,在单独的线程中运行前一个,在回调函数之外访问异步分配的数据可能会导致竞争条件。如果您想异步使用它,您可以在异步回调函数中处理响应,或者将其转换为 Promise。

关于 promise 的信息:

Asynchronous Programming in JavaScript with Promises

Promise.js

Bluebird (另一个 promise 库)

关于node.js - 使用 express 和 marked 返回呈现的 Markdown ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27971806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com