You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nx Monorepo中集成AdonisJS与Angular搭建前后端模板

在Nx工作区中集成AdonisJS后端的方案

因为Nx官方暂未支持AdonisJS集成,你可以通过以下手动方式将AdonisJS项目纳入Nx工作区,保持前后端项目结构统一:

1. 在Nx工作区内创建AdonisJS项目

进入你的Nx工作区根目录,使用AdonisJS的初始化命令,将项目创建在Nx标准的apps目录下(比如命名为api):

npm init adonisjs@latest apps/api -- --kit=api --auth-guard=access_tokens --db=sqlite --no-git-init

参数说明:

  • --kit=api:创建纯API后端项目(若需全栈可改为web)
  • --auth-guard=access_tokens:选用适配前后端分离的token认证方案
  • --db=sqlite:默认使用sqlite,可按需替换为mysql/postgres
  • --no-git-init:跳过git初始化,避免与Nx工作区的git仓库冲突

2. 配置Nx识别AdonisJS项目

在apps/api目录下创建project.json文件,定义Nx可执行的目标(与Angular项目命令风格统一):

{
  "name": "api",
  "$schema": "../../node_modules/nx/schemas/project-schema.json",
  "sourceRoot": "apps/api",
  "projectType": "application",
  "targets": {
    "dev": {
      "executor": "nx:run-script",
      "options": {
        "script": "dev",
        "cwd": "apps/api"
      }
    },
    "build": {
      "executor": "nx:run-script",
      "options": {
        "script": "build",
        "cwd": "apps/api"
      }
    },
    "test": {
      "executor": "nx:run-script",
      "options": {
        "script": "test",
        "cwd": "apps/api"
      }
    },
    "exec": {
      "executor": "nx:run-script",
      "options": {
        "script": "exec",
        "cwd": "apps/api"
      }
    }
  }
}

之后即可用Nx命令管理Adonis项目:

  • 启动开发服务器:nx run api:dev
  • 构建生产版本:nx run api:build
  • 执行Adonis Ace命令:nx run api:exec --command="npx ace make:controller User"

3. 统一依赖管理(可选)

为减少重复依赖,可将AdonisJS的依赖从apps/api/package.json迁移到Nx根目录的package.json,删除apps/api下的node_modules和锁文件后,在根目录执行npm install完成依赖安装。

4. 前后端跨域配置

在Angular项目中添加代理配置,解决跨域问题:

  1. 在Angular项目根目录创建proxy.conf.json:
{
  "/api": {
    "target": "http://localhost:3333",
    "secure": false,
    "changeOrigin": true
  }
}
  1. 在Angular项目的project.json中,修改serve目标的options,添加proxyConfig:
"serve": {
  "executor": "@angular-devkit/build-angular:dev-server",
  "options": {
    "browserTarget": "frontend:build",
    "proxyConfig": "apps/frontend/proxy.conf.json"
  }
}

这样Angular项目的/api请求会自动转发到AdonisJS的开发服务器。

常见问题处理

  • 端口冲突:修改apps/api/.env中的PORT变量,比如改为3334
  • Nx缓存干扰:在nx.json的tasksRunnerOptions中,为api项目的build任务禁用缓存,或调整缓存策略
  • Ace命令执行:确保通过nx run api:exec执行Adonis代码生成命令,避免路径错误

内容的提问来源于stack exchange,提问作者AzPogoDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:35:14