首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pm2运行带有tsconfig路径的类型记录生成

使用pm2运行带有tsconfig路径的类型记录生成
EN

Stack Overflow用户
提问于 2022-01-21 15:32:43
回答 1查看 1.1K关注 0票数 0

我试图在生产中使用tsconfig路径运行类型记录的构建(.js文件),我在使用路径运行类型记录时没有问题。就在使用pm2在生产上运行构建时。

我试过:

代码语言:javascript
复制
apps: [
{
  name: 'app',
  script: './dist/index.js',
  node_args: '-r ts-node/register -r tsconfig-paths/register',
},

],

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-28 19:59:20

TLDR:如果我假设您运行info *对于tsconfig的常见误解,您可以尝试:

代码语言:javascript
复制
{
  apps: [
  {
    name: 'app',
    script: './dist/index.js',
    node_args: '-r ts-node/register -r tsconfig-paths/register',
    env: {
      "TS_NODE_BASEURL": "./dist"
    }
  },
}

解释:

类型记录允许我们指定路径别名,这样我们就不必使用像../../../../config这样丑陋的相对路径。要使用此特性,通常需要如下所示的tsconfig.json

代码语言:javascript
复制
...
  "outDir": "./dist",
  "baseUrl": "./src", /* if your code sits in the /src directory */
   "paths": {
     "@/*": ["*"]
   }, 
...

现在您可以执行以下操作:

代码语言:javascript
复制
import config from "@/config";

它将无错误地编译。在编译过程中,请求的模块位于src目录中。然而:

代码语言:javascript
复制
$ node -r tsconfig-paths/register dist/index.js
Failure! Cannot find module '@/config'

为什么会这样呢?因为在运行时,配置不再位于./src中,而是可以在./dist中找到。

那我们该怎么处理呢?幸运的是,tsconfig-path允许我们用baseUrl env覆盖TS_NODE_BASEURL

代码语言:javascript
复制
$ TS_NODE_BASEURL=./dist node -r tsconfig-paths/register dist/index.js
Success! 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70803780

复制
相关文章

相似问题

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