如何在NX Monorepo中以NX方式执行nest add @nestjs/azure-func-http?
在NX Monorepo中集成@nestjs/azure-func-http的解决方案
问题背景
在NX Monorepo里集成@nestjs/azure-func-http时,找不到类似Angular PWA的NX风格schematics命令:
- 执行
npx nx add @nestjs/azure-func-http --project=api提示Cannot find configuration for task api:add - 直接运行
npx nest add @nestjs/azure-func-http --project=api报错could not determine executable to run - 只能先安装
@nestjs/cli再手动修改配置,过程繁琐
可行的集成步骤
1. 安装局部@nestjs/cli
避免全局CLI版本冲突,直接安装到项目开发依赖:
npm install -D @nestjs/cli
2. 用nest CLI完成初始化(指定项目路径)
NX Monorepo中,nest CLI需要明确项目所在目录,用--path参数替代--project:
npx nest add @nestjs/azure-func-http --path apps/api
该命令会自动生成main.azure.ts、function.json等Azure函数所需文件,并添加相关依赖。
3. 修正NX项目配置
nest CLI不会自动更新NX的project.json,需手动补充构建和运行目标:
打开apps/api/project.json,在targets节点下添加以下配置:
"build": { "executor": "@nrwl/js:tsc", "outputs": ["{options.outputPath}"], "options": { "outputPath": "dist/apps/api", "main": "apps/api/src/main.azure.ts", "tsConfig": "apps/api/tsconfig.app.json", "assets": [ "apps/api/src/assets", "apps/api/src/function.json" ] } }, "serve:azure": { "executor": "@nrwl/workspace:run-commands", "options": { "command": "func start --script-root dist/apps/api" } }
build目标指定用NX的tsc执行器编译,入口指向生成的main.azure.ts,同时将function.json加入资源文件列表serve:azure目标调用Azure Functions CLI启动服务
4. 测试运行
先构建项目:
npx nx build api
再启动Azure函数:
npx nx run api:serve:azure
常见问题排查
- 若仍报错
could not determine executable to run:确认@nestjs/cli已安装到项目依赖(查看package.json的devDependencies),npx会优先调用局部安装的CLI - 确保api项目是NX生成的标准NestJS项目:手动创建的项目可能缺少NX所需的配置文件
内容的提问来源于stack exchange,提问作者Kirby
相关产品推荐
相关产品推荐

