[英]Run typescript build with tsconfig-paths using pm2
我正在嘗試使用生產中的 tsconfig-paths 運行 typescript 的構建(.js 文件),使用路徑運行 typescript 沒有問題。 就在使用 pm2 在生產環境中運行構建時。
我努力了:
apps: [
{
name: 'app',
script: './dist/index.js',
node_args: '-r ts-node/register -r tsconfig-paths/register',
},
],
TLDR:如果我假設您運行 info *the* 關於 tsconfig 的常見誤解,您可以嘗試:
{
apps: [
{
name: 'app',
script: './dist/index.js',
node_args: '-r ts-node/register -r tsconfig-paths/register',
env: {
"TS_NODE_BASEURL": "./dist"
}
},
}
解釋:
Typescript 允許我們指定路徑別名,這樣我們就不必使用丑陋的相對路徑,如../../../../config
。 要使用此功能,您通常需要一個tsconfig.json
,如下所示:
...
"outDir": "./dist",
"baseUrl": "./src", /* if your code sits in the /src directory */
"paths": {
"@/*": ["*"]
},
...
現在您可以執行以下操作:
import config from "@/config";
它將無錯誤地編譯。 在編譯期間,請求的模塊位於src
目錄中。 然而:
$ node -r tsconfig-paths/register dist/index.js
Failure! Cannot find module '@/config'
這是為什么? 因為在運行時配置不再位於./src
中,而是可以在./dist
中找到。
那么我們該如何處理呢? 幸運的是 tsconfig-paths 允許我們用TS_NODE_BASEURL
覆蓋 baseUrl:
$ TS_NODE_BASEURL=./dist node -r tsconfig-paths/register dist/index.js
Success!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.