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

使用PM2编译运行Adonis 6 TypeScript应用遇错求助

解决Adonis 6 TypeScript编译后找不到env.js的问题及编译注意事项

一、解决env.ts未被编译的问题

你的tsconfig.json中include数组仅包含./src目录,根目录下的env.ts不在编译范围内,因此TypeScript编译器不会将其编译为env.js,导致PM2启动时出现文件找不到的错误。

修复步骤:

  1. 修改tsconfig.json的include数组,添加根目录下的env.ts(若存在adonisrc.ts等其他根目录配置文件,建议一并加入):
{
  "extends": "@adonisjs/tsconfig/tsconfig.app.json",
  "compilerOptions": {
    "rootDir": "./",
    "outDir": "./build",
    "types": ["@adonisjs/auth"]
  },
  "include": [
    "./src",
    "./env.ts",
    "./adonisrc.ts" // 可选,根据项目结构补充其他必要配置文件
  ]
}
  1. 重新执行编译命令:
npx tsc

此时env.ts会被编译到build/env.js路径下。
3. 确保PM2启动编译后的正确入口文件(通常为build/bin/server.js):

pm2 start build/bin/server.js --name your-app-name

二、Adonis 6 TypeScript编译注意事项

  • 覆盖所有必要配置文件:除env.ts外,根目录的adonisrc.ts、database.ts等框架配置文件都需加入include数组,避免编译后缺失依赖文件。
  • 优先使用官方构建命令:建议用node ace build替代直接npx tsc,Adonis官方构建工具会额外处理静态资源、视图文件,确保框架依赖的配置文件被正确编译和复制。
  • 验证编译输出结构:编译后检查build目录,确认env.js、adonisrc.js及src下所有编译文件都存在,且路径与原项目结构一致(因rootDir设为./)。
  • 配置正确入口路径:在package.json中将main字段指向编译后的入口文件(如"main": "./build/bin/server.js"),PM2启动时可直接执行pm2 start npm --name your-app -- start(需确保scripts中start命令指向编译后的文件)。
  • 启用严格类型检查:编译时添加--noEmitOnError参数(npx tsc --noEmitOnError),避免类型错误的代码被编译,提前发现潜在问题。
  • 不随意修改默认编译配置:Adonis提供的@adonisjs/tsconfig/tsconfig.app.json已配置适配Node.js环境的参数(如target: ES2022、moduleResolution: node16),无特殊需求不要修改这些基础配置。
  • 生产环境禁用ts-node:生产环境必须使用编译后的JavaScript文件启动,禁止直接用ts-node运行,避免性能损耗和类型相关的运行时问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:12:46