簡體   English   中英

使用 pm2 使用 tsconfig-paths 運行 typescript 構建

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM