无法读取未定义的node.js文件系统的属性“ toString”

时间:2018-11-19 04:49:27

标签: node.js string http fs

我在这里有这个脚本,在加载页面时,它应该首先加载页眉html样板,一些动态段落,然后以页脚html样板结束请求。这两个样板文件都来自外部文件。

经过测试,我收到:

TypeError:无法读取未定义的属性“ toString”     在ReadFileContext.callback(/user_code/index.js:20:23)     在FSReqWrap.readFileAfterOpen上[按完成状态](fs.js:367:13)

我的理解是,我需要 .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');
        });

    });

知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

您应该将编码传递给vector<double> copyRow = holder_node[0]; 才能从缓冲区转换。

toString()

此外,似乎您的变量data.toString('utf8'); 尚未定义,因此可能您的文件不存在。捕获错误并查看问题所在:

data