Azure Functions NodeJS Express应用程序抛出无法确定函数入口点错误

时间:2018-07-03 21:18:10

标签: node.js azure express azure-functions azure-functions-runtime

我正在尝试使用nodejs和express创建一个简单的hello world azure函数应用程序。但是,我收到以下错误:

Exception while executing function: Functions.httpexpressapp. mscorlib: Unable to determine function entry point. If multiple functions are exported, you must indicate the entry point, either by naming it 'run' or 'index', or by naming it explicitly via the 'entryPoint' metadata property.

这是我的代码:

function.json

 {
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ],
  "entryPoint": "index",
  "disabled": false
}

index.js:

const express = require('express')
const app = express()

app.get('/', (req, res) => res.send('Express JS Hello World App!!!'))

package.json:

{
  "name": "httpexpressapp",
  "version": "1.0.0",
  "description": "sample app",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "john doe",
  "license": "ISC",
  "dependencies": {
    "express": "^4.16.3"
  }
}

然后,我在函数app下有一个node_modules目录

感谢您的帮助。预先感谢!

2 个答案:

答案 0 :(得分:1)

Azure Functions平台颇有建树,因为它具有执行绑定和触发器之类的功能。 Azure Functions中的Node中编码的函数必须具有以下形式。

module.exports = function(context) {
    // function logic goes here :)
};

您可以找到一些JavaScript tips for Azure Functions here。看来您正在尝试做一个简单的HTTP-trigger function。查看您的示例,您会想要这样的东西。

module.exports = function(context, req) {
    context.res = {
        // status defaults to 200 */
        body: "Express JS Hello World App!!!"
    };
    context.done();
};

请注意,Azure Functions将处理HTTP请求的路由,因此您不太可能希望使用Express.js。

答案 1 :(得分:0)

即使您想将 Express 与 Azure 功能一起使用,您也可以选择此Azure AWS serverless Express

包装。它非常有用。