问题描述
我有一个 nodejs 应用程序。有 3 个函数和 2 个 HTTP 调用。
这是我用于 HTTP 路由的 function.json:
{
"bindings": [
{
"authLevel": "function","type": "httpTrigger","direction": "in","name": "req","methods": ["post"]
},{
"type": "http","direction": "out","name": "res"
},{
"name": "firstStep","type": "serviceBus","queueName": "firststepqueue","connection": "MyServiceBus","direction": "out"
}
],"scriptFile": "../dist/firstStep/index.js"
}
当我想绑定时:
context.bindings.firstStep = message;
context.res = {
status: 200,body: {"message": "success"},headers: {
'Content-Type': 'application/json'
}
};
context.done();
但是队列在 Azure 中不起作用。
当我运行 func start
时,它在我的本地工作。
没有错误!
解决方法
无需指定脚本文件。
以下适用于本地和我这边的 azure:
index.js
module.exports = async function (context,req) {
context.log('JavaScript HTTP trigger function processed a request.');
var message = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
context.log(message);
context.bindings.firstStep = message;
context.res = {
// status: 200,/* Defaults to 200 */
body: "test"
};
}
function.json
{
"bindings": [
{
"authLevel": "anonymous","type": "httpTrigger","direction": "in","name": "req","methods": [
"get","post"
]
},{
"type": "http","direction": "out","name": "res"
},{
"name": "firstStep","type": "serviceBus","queueName": "firststepqueue","connection": "MyServiceBus","direction": "out"
}
]
}
local.settings.json
{
"IsEncrypted": false,"Values": {
"AzureWebJobsStorage": "","FUNCTIONS_WORKER_RUNTIME": "node","MyServiceBus":"Endpoint=sb://bowman1012.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=xxxxxx"
}
}
host.json
{
"version": "2.0","logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,"excludedTypes": "Request"
}
}
},"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle","version": "[1.*,3.1.0)"
}
}
Configuration Settings on Azure