在生产问题中部署 Typescript GraphQL

Posted

技术标签:

【中文标题】在生产问题中部署 Typescript GraphQL【英文标题】:deploy Typescript GraphQL in production issue 【发布时间】:2020-05-03 23:13:04 【问题描述】:

我已经尝试了一周的时间来研究并将我的服务部署到生产中,但总是无法编译,我的服务器使用 Typescript、Nexus GraphQL、Prisma 和 docker-compose,在开发模式下我可以使用 ts-node-dev 顺利运行之前第一次运行我的应用程序,我需要激活 Prisma 的 docker-compose,然后部署 Prisma 服务和生成的服务,然后我运行 ts-node-dev,它可以工作,但是当我在 ts-node 中进行生产时,它失败了,我也尝试使用pm2,但它不起作用,因为当我使用ts-node时,它总是无法编译我的服务器。

我在 pm2 GitHub running typescript with pm2 上的这个开放问题中尝试了很多事情选项

我也试过这个pm2 start ts-node -- -P tsconfig.server.json ./src 我的 tsconfig.server.json 就像这样


  "extends": "./tsconfig",
  "compilerOptions": 
    "sourceMap": false
  

这是我的基础 tsconfig.json :


    "compilerOptions": 
         "lib": ["esnext", "dom"],
          "sourceMap": true, 
          "outFile": "./",
          "outDir": "./dist",  
          "strictFunctionTypes": true,
          "strictBindCallApply": true,
          "noImplicitThis": true,                
          "alwaysStrict": true, 
          "skipLibCheck": true,  
          "esModuleInterop": true
    

运行上面提到的命令后编译失败

我已经尝试过使用 PM2 生态系统,它仍然是一样的,没有任何效果 我的生态系统是这样的


    "script": "ts-node",
    "args": "./src"

你们都使用 Typescript 成功了吗? 我能知道你如何部署它们吗? 如果你分享你的经验,这对我来说意味着:)并希望你能提供帮助:)

【问题讨论】:

【参考方案1】:

请尝试使用tsc 转译您的项目。例如。 tsc --outDir dist/ 在 dist 文件夹中创建有效的 .js 文件。如果在转译过程中出现任何错误,您需要修复它们。

成功转译后,您可以使用 node 从 dist 文件夹中提供您的有效 js。例如。 node dist/src/index.js.

【讨论】:

以上是关于在生产问题中部署 Typescript GraphQL的主要内容,如果未能解决你的问题,请参考以下文章

在生产服务器 codeigniter 3.1.2(PHP) Session Destroy 上自动从 facebook graph API 重定向?

用 source map 调试生产环境

Nebula Graph - 集群模式部署

如何在 TypeScript 中使用 aws-cdk 在每次部署时不重建 DockerImageAsset?

在 Google App Engine 上部署 create-react-app-typescript

在 heroku 上部署 typeorm/typescript 应用程序