Azure Functions TypeScript编译报错:@azure/functions无app等导出成员
问题原因与解决方案
错误根源
你遇到的编译错误核心原因是代码使用了Azure Functions Node.js v4版本的API,但当前安装的@azure/functions包是v3或更早版本。app、InvocationContext、HttpResponseInit这些导出成员都是v4版本才引入的新API,旧版本包中不存在这些定义。
另外代码里还有一个明显的语法错误:未定义的event变量,你应该是想使用函数参数里的request对象。
解决步骤
1. 升级@azure/functions到最新v4版本
执行以下命令更新依赖:
npm install @azure/functions@latest
或使用yarn:
yarn add @azure/functions@latest
2. 修正tsconfig.json的模块解析配置
你的tsconfig.json中paths配置会干扰模块的正常解析,建议移除该字段,同时确保module和moduleResolution适配v4版本:
{ "compilerOptions": { "target": "es2020", "strict": true, "preserveConstEnums": true, "noEmit": true, "sourceMap": false, "module": "esnext", "moduleResolution": "node", "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "baseUrl": "src/functions" }, "exclude": [ "node_modules", "**/*.test.ts" ], "include": [ "**/*" ] }
3. 修正代码中的未定义变量错误
把代码里的event替换为request,因为函数接收的参数是request而非event:
import { app, HttpRequest, HttpResponseInit, InvocationContext, } from "@azure/functions"; import { workerExec } from "./worker"; export async function myappfunction1( request: HttpRequest, context: InvocationContext ): Promise<HttpResponseInit> { context.log(`Http function processed request for url "${request.url}"`); try { console.log(`Incoming request: ${JSON.stringify(request)}`); const result = await workerExec(request, context); console.log("Successfully processed request;"); return result; } catch (err) { console.log(err); throw err; } } app.http("myappfunction1", { methods: ["GET", "POST"], authLevel: "anonymous", handler: myappfunction1, });
内容的提问来源于stack exchange,提问作者Kid_Learning_C
相关产品推荐
相关产品推荐

