2016-11-22

fs.readFile('./blogs/test.md', function (err, data) {
    if (err) res.send(err);
    res.send(data);
});

编码完工~切换到终端,输入 nodemon app.js

哦对了,强烈推荐一个小工具 nodemon 。一句话简介:全局安装了nodemon后,我们可以通过nodemon xxx.js的方式启动nodejs程序,而在此方式下启动的程序会自动侦测与本程序相关的文件,随时自动重启进程以反映最新的变化。实乃nodejs开发debug过程中必备利器

言归正传,我志得意满的打开chrome浏览器访问localhost:3000,意料中的文字却没有出现,反而弹出了一个文件下载询问框。shit!谁告诉我send()方法会自动推定Content-Type的!?打开网络侦测一看,果不其然,返回的Content-Type是 application/octet-stream。(经测试,在FireFox中同样提示下载文件,有点搞笑的是,IE11倒是老老实实的直接在页面显示了文件内容...IE大哥你怎么老跟别人不一样啊...)

Well~我重新翻阅了nodejs的文档,对于fs.readFile(path, callback (err, data))的解释最后有一句话:

If no encoding is specified, then the raw buffer is returned.

得得~这就是看文档不仔细的后果。查阅上文表格可见,buffer对应的content-type确实是application/octet-stream来着,修改代码:

fs.readFile('./blogs/test.md', 'utf-8', function (err, data) {
    if (err) res.send(err);
    res.send(data);
});

你可能感兴趣的:(2016-11-22)