node.js - 无法读取未定义的 node.js 文件系统的属性“toString”
问题描述
我这里有这个脚本,在加载页面时,它应该首先加载一个标题 html 样板,一些动态段落,并以页脚 html 样板结束请求。两个样板都来自外部文件。
测试后,我收到:
TypeError:无法在 FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:367:13) 的 ReadFileContext.callback (/user_code/index.js:20:23) 处读取未定义的属性“toString”
我的理解是我需要.toString()来确保从外部文件加载的内容被缓冲为字符串。
exports.request = functions.https.onRequest((req, res) => {
fs.readFile('/public/templates/header-template.html', function(_err, data) {
res.write(data.toString());
console.log('Header Loaded');
});
res.writeHead(200, {'Content-Type': 'text/html'});
var q = url.parse(req.url, true).query;
var txt = '<p>Thanks <b>' + q.firstname + ' ' + q.lastname + '</b>. An email has been sent to <b>' + q.email + '</b> with details about your request.';
res.write(txt);
fs.readFile('/public/templates/footer-template.html', function(_err, data) {
res.end(data.toString());
console.log('Footer Loaded');
});
});
知道我做错了什么吗?
解决方案
您应该将编码传递toString()
给从缓冲区转换。
data.toString('utf8');
此外,您的变量似乎data
未定义,因此您的文件可能不存在。捕获错误并查看问题所在:
if(_err){
console.error(_err);
}
推荐阅读
- python - 不能对切片索引
使用这些索引器 [[2.]] - bash - Gitlab CI 循环
- sql - 元数据库中的 SQL 查询 - 显示今天数据或日期选择数据
- reactjs - 如何使用 NGINX 部署 NextJS?
- react-native - React Native 和 React Native Navigation - 处理返回(goBack)问题
- java - 更新具有相同值的 JavaFX 属性
- r - 为什么 R 的错误处理功能在 shinyApp 中不起作用?
- reactjs - 无法读取未定义(反应)的属性''?
- visual-studio-code - 我可以在右上角的vscode中添加“打开文件”按钮的快捷方式吗
- node.js - NodeJS SyntaxError: Unexpected token { 从模块导入初始化程序时