首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pm2中使用tsconfig路径?

如何在pm2中使用tsconfig路径?
EN

Stack Overflow用户
提问于 2019-09-08 03:18:33
回答 1查看 5.3K关注 0票数 3

我正在尝试用pm2部署我的类型记录项目,但是这个论点似乎不正确。

以下是ecosystem.config.yml:

代码语言:javascript
复制
apps:
  - name: 'node-app'
    script: './src/main.ts'
    interpreter: './node_modules/.bin/ts-node'
    # they dont't work correctly below.
    interpreter_args: '-r tsconfig-paths/register'
    # args: '-T -r tsconfig-paths/register ./src/index.ts',
    # args: '-r ./node_modules/tsconfig-paths/register ./src/main.ts'
    # interpreter_args: ['--require=tsconfig-paths/register']
    # interpreter_args: '-P . -r ./node_modules/tsconfig-paths/register'
    kill_timeout: 10000
    instances: max
    exec_mode: cluster
    env:
      NODE_ENV: development

当我运行pm2时,启动ecosystem.config.yml并检查日志:

代码语言:javascript
复制
0|node-app | Error: Cannot find module '~framework/common/frame-util'
0|node-app |     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
0|node-app |     at Function.Module._load (internal/modules/cjs/loader.js:507:25)
0|node-app |     at Module.require (internal/modules/cjs/loader.js:637:17)
0|node-app |     at require (internal/modules/cjs/helpers.js:20:18)
0|node-app |     at Object.<anonymous> (/Users/zhaolin/__CODES__/__PERSONAL__/charley-nest-starter/script/ci/src/solution/gateway/auth/auth.service.ts:5:1)
0|node-app |     at Module._compile (internal/modules/cjs/loader.js:689:30)
0|node-app |     at Module.m._compile (/Users/zhaolin/.nvm/versions/node/v10.9.0/lib/node_modules/pm2/node_modules/ts-node/src/index.ts:473:23)
0|node-app |     at Module._extensions..js (internal/modules/cjs/loader.js:700:10)
0|node-app |     at Object.require.extensions.(anonymous function) [as .ts] (/Users/zhaolin/.nvm/versions/node/v10.9.0/lib/node_modules/pm2/node_modules/ts-node/src/index.ts:476:12)
0|node-app |     at Module.load (internal/modules/cjs/loader.js:599:32)

我的tsconfig.json是:

代码语言:javascript
复制
{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "rootDir": ".",
    "paths": {
      "~framework/*":["src/framework/*"],
      "~solution/*":["src/solution/*"],
      "~business/*":["src/solution/business/*"],
      "~dto/*":["src/solution/dto/*"],
      "~entities/*":["src/solution/entities/*"],
      "~/*":["src/*"]
    }
  },
  "exclude": ["node_modules", "dist"]
}

路径别名似乎不能正常工作。它在没有pm2的情况下运行良好(这是一个nestjs项目):

代码语言:javascript
复制
...
    "start": "rimraf dist && cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/main.ts",
...

有人能帮我解决这个问题吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-03-31 03:29:33

正如Aleksandr所说,您可以首先使用tsc构建项目,然后使用node而不是ts-node运行它。

示例:

  1. 在脚本运行程序(在package.json中)中,可以定义:
代码语言:javascript
复制
  "build": "tsc",
  "runBuild": "pm2 start ecosystem.yml --only node-app"
  1. 在您的ecosystem.yml中,可以定义:
代码语言:javascript
复制
apps:
  - name: 'node-app'
    script: './dist/src/main.js'
    node_args: '-r ts-node/register -r tsconfig-paths/register'
    kill_timeout: 10000
    instances: max
    exec_mode: cluster
    env:
      NODE_ENV: development
  1. 跑:
代码语言:javascript
复制
$ npm run build
$ npm run runBuild

希望这有帮助

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57838945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档