我正在尝试用pm2部署我的类型记录项目,但是这个论点似乎不正确。
以下是ecosystem.config.yml:
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并检查日志:
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是:
{
"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项目):
...
"start": "rimraf dist && cross-env NODE_ENV=development ts-node -r tsconfig-paths/register src/main.ts",
...有人能帮我解决这个问题吗?谢谢。
发布于 2020-03-31 03:29:33
正如Aleksandr所说,您可以首先使用tsc构建项目,然后使用node而不是ts-node运行它。
示例:
"build": "tsc",
"runBuild": "pm2 start ecosystem.yml --only node-app"ecosystem.yml中,可以定义: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$ npm run build
$ npm run runBuild希望这有帮助
https://stackoverflow.com/questions/57838945
复制相似问题