VS Code本地运行JavaScript版Azure Functions httpTrigger 提示变量未定义问题
问题1:参数读取逻辑不完整
你当前仅从req.query中读取参数,req.query对应的是URL路径后的查询参数(例如http://localhost:7071/api/函数名?var1=1中问号后的参数)。你把{"var1": "1"}放在请求体中时,参数会存储在req.body对象里,只读取req.query自然会得到undefined。
参考官方示例的兼容写法,修改代码即可同时支持查询参数和请求体参数传值:
module.exports = async function (req) { const var1 = req.query.var1 || (req.body && req.body.var1); // 后续业务逻辑 }
问题2:修改sample.dat不生效,默认加载{"name": "Azure"}
排查和解决方法如下:
- 确认sample.dat存放位置正确:必须放在对应函数的文件夹下,和
index.js、function.json处于同级目录,放在项目根目录不会生效 - 检查VS Code调试配置:打开
.vscode/launch.json,找到对应函数的启动配置项,查看requestBody字段是否仍然写死了默认值{"name": "Azure"},如果是直接修改为你需要的{"var1": "1"}即可 - 更稳妥的测试方式:本地启动函数后,直接用Postman、curl等工具手动发请求测试,不受本地默认配置影响,示例curl命令如下:
curl -X POST http://localhost:7071/api/替换为你的函数名 \ -H "Content-Type: application/json" \ -d '{"var1": "1"}'
额外排查点
如果修改后仍然读不到req.body参数,检查对应函数目录下的function.json文件,确认http触发器的in绑定配置中name属性值为req,和你代码中的入参名一致。
内容的提问来源于stack exchange,提问作者ink49
相关产品推荐
相关产品推荐

