typescript Azure Functions节点PM 4未检测到我的函数

sg24os4d  于 2023-04-13  发布在  TypeScript
关注(0)|答案(1)|浏览(70)

我刚刚使用this migration guide将我现有的项目切换到新的编程模型v4。我喜欢这样的想法,我可以根据我的需要构建我的目录和文件,但它似乎不起作用。我的文件夹结构(src位于函数项目的根目录中,与dist一起):

src
+---functions
|   +---criteria
|   |   |   create.ts
|   |   |   getall.ts
|   |   |   getone.ts
|   |   |
|   |   \---types
|   |           createCriteria.dto.ts
|   |
|   +---events
|   |       getall.ts
|   |
|   \---ratings
|       |   create.ts
|       |   getcriteria.ts
|       |   rateone.ts
|       |
|       \---types
|               createRating.dto.ts
|
\---lib ...

package.json中的主要属性(是的,dist中有一个src目录):

"main": "dist/src/functions/**/*.js"

但是,当我在本地启动应用程序时,我会收到以下警告:

"No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.)."

我的函数文件看起来都像这样...

import { HttpRequest, HttpResponseInit, InvocationContext, app } from '@azure/functions'

export const getCriteria = async (req: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> => {
  ...
  return { body: ... }
}

app.http('ratings-getcriteria', {
  methods: ['GET'],
  route: 'ratings/{id}',
  handler: getCriteria
})

我错过了什么?
我还尝试在src/functions中创建一个函数,并使用与教程中相同的glob模式(dist/src/functions/*.js),但这也不起作用。

mrphzbgm

mrphzbgm1#

问题是Azure Functions Core Tools在我的机器上太旧了。编程模型v4需要v4.0.5095或更高版本。

相关问题