gpt4 book ai didi

javascript - 从 Azure 函数提供 HTML 文件时出错

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:37 26 4
gpt4 key购买 nike

我正在尝试使用 Azure 函数打开、读取和返回 HTML 文件。我正在本地开发,日志显示该函数已成功执行,但是在浏览器上我收到 500 内部服务器错误。我在这里做错了什么吗?

const fs = require('fs');
const path = require('path');
const mime = require('../node_modules/mime-types');
module.exports = function (context, req) {
const staticFilesFolder = 'www/build/';
const defaultPage = 'index.html';
getFile(context, req.query.file);
function getFile(context, file) {
const homeLocation = process.env["HOME"];
if(!file || file == null || file === undefined){
context.done(null,{status:200,body:"<h1>Define a file</h1>",headers:{
"Content-Type":" text/html; charset=utf-8"
}});
}
fs.readFile(path.resolve(path.join(homeLocation, staticFilesFolder, file)),
(err, htmlContent) => {
if (err) {
getFile(context, "404.html");
}
else {
const res = {
status: 200,
body: htmlContent,
headers:{
"Content-Type": mime.lookup(path.join(homeLocation, staticFilesFolder, file))
}

}
context.done(null,res);
}
})
}

};

注意我确信404.html存在并且index.html存在。当我记录 htmlContent 的内容时,它给出了正确的输出。

函数.json

{
"disabled": false,
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"methods":["get"],
"route":"home",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}

Chrome 上的响应

Response on Chrome with "Content-Length"

如果我删除“Content-Length” header ,状态代码将更改为 406。

Response on Chrome without "Content-Length"

更新1代码似乎在Azure Portal上正常运行,但在本地运行时不起作用。

最佳答案

看起来您正在组合从 http 触发函数返回数据的两种方法(context.rescontext.done()):https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-node#accessing-the-request-and-response

由于您正在使用 context.res,请尝试删除 context.done();

关于javascript - 从 Azure 函数提供 HTML 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46857443/

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