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

Posted

技术标签:

【中文标题】在 heroku 上部署 typeorm/typescript 应用程序【英文标题】:Deploying typeorm/typescript app on heroku 【发布时间】:2020-10-18 23:34:06 【问题描述】:

我在 heroku 上部署 typeorm 应用程序时遇到问题。这是这个应用程序的完全简约版本: https://github.com/wiktorkujawa/typeorm-heroku

所以我做了什么:

    启动项目 typeorm init --name typeorm-heroku --database postgres

服务器(typeorm-postrges 文件夹)

    在服务器文件夹(cd typeorm-postgres)中输入: npx tsconfig.json(选择示例节点) 创建 yarn.lock 文件并更新它...

为服务器安装的依赖项。

index.tsx 中的简单连接 添加了 Procfile 文件(没有改变)

客户

    创建 react 项目并为其安装依赖项: npx create-react-app web --typescript 纱线加... 2.在src文件夹内创建graphql文件夹并初始化graphql代码生成器 npx graphql-codegen init

    你的架构在哪里?:http://localhost:4000/graphql 你的操作和片段在哪里?: src/graphql/*.graphql 在哪里写输出:(让它默认) ...(默认) package.json 中的什么脚本应该运行 codegen?基因

在codegen.yml中添加:

config:
       hooksImportFrom: '@apollo/react-hooks'
       withHooks: true
       withHOC: false
       withComponent: false

并安装了 codegen 的依赖项: 纱 3. 生成模式: 纱线根 4.在index.tsx中从https://www.apollographql.com/docs/react/migrating/boost-migration/#advanced-migration复制代码

    读取简单列表查询以检查查询是否有效,但它仅在开发模式下有效。 在 heroku 中,我得到了很大的 heroku 页面:

应用程序错误 应用程序发生错误,无法提供您的页面。如果你是 应用程序所有者,请查看您的日志以获取详细信息。您可以从 Heroku CLI 使用 命令 heroku 日志 --tail

这是在终端中输入 heroku logs --tail 后的错误:

2020-06-28T18:40:57.079023+00:00 app[web.1]: > typeorm-heroku@0.0.1 start /app
2020-06-28T18:40:57.079024+00:00 app[web.1]: > ts-node src/index.ts
2020-06-28T18:40:57.079024+00:00 app[web.1]:
2020-06-28T18:40:57.085699+00:00 app[web.1]: sh: 1: ts-node: not found
2020-06-28T18:40:57.095880+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2020-06-28T18:40:57.096505+00:00 app[web.1]: npm ERR! syscall spawn
2020-06-28T18:40:57.097800+00:00 app[web.1]: npm ERR! file sh
2020-06-28T18:40:57.098220+00:00 app[web.1]: npm ERR! errno ENOENT
2020-06-28T18:40:57.099843+00:00 app[web.1]: npm ERR! typeorm-heroku@0.0.1 start: `ts-node src/index.ts`
2020-06-28T18:40:57.100130+00:00 app[web.1]: npm ERR! spawn ENOENT
2020-06-28T18:40:57.100384+00:00 app[web.1]: npm ERR!
2020-06-28T18:40:57.100546+00:00 app[web.1]: npm ERR! Failed at the typeorm-heroku@0.0.1 start script.
2020-06-28T18:40:57.100713+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2020-06-28T18:40:57.119552+00:00 app[web.1]:
2020-06-28T18:40:57.120040+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2020-06-28T18:40:57.120170+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2020-06-28T18_40_57_105Z-debug.log
2020-06-28T18:40:57.195532+00:00 heroku[web.1]: Process exited with status 1
2020-06-28T18:40:57.257902+00:00 heroku[web.1]: State changed from starting to crashed
2020-06-28T18:41:03.656226+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=typeorm-heroku.herokuapp.com request_id=4e810375-5365-47c5-bccd-a6b28a893359 fwd="178.235.225.93" dyno= connect= service= status=503 bytes= protocol=https
2020-06-28T18:41:04.010781+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=typeorm-heroku.herokuapp.com request_id=1a30a549-55a7-49af-a6b5-f199ee78fda0 fwd="178.235.225.93" dyno= connect= service= status=503 bytes= protocol=https

嗯,我认为问题出在 package.json 中,但我不知道如何解决。

【问题讨论】:

/app/.npm/_logs/2020-06-28T18_40_57_105Z-debug.log 中有什么内容? 嗯,我不知道,但我找到了解决方案。我必须将 ts-node 安装为依赖项(而不是像以前那样作为 devDependencies)。 【参考方案1】:

使用 docker 将后端服务器部署到 heroku。并在vercel上部署前端。这就是我通常部署打字稿应用程序的方式。您可以按照https://github.com/benawad/lireddit/blob/master/server/Dockerfile 中给出的方式设置 docker 服务器

【讨论】:

【参考方案2】:

解决方案是在依赖项(而不是 devDependencies)中安装 ts-node。

【讨论】:

【参考方案3】:

删除node_modules文件夹并运行npm install重新安装所有项目依赖项

【讨论】:

不工作(好吧,我认为这行不通,因为我之前用不同的包做了大约 10 次),但要确保我又做了一次。【参考方案4】:

你的节点包版本是什么,如果是像 v12.xx 这样的新版本,你可以通过输入 npm -v 来检查它尝试降级到 v10.16 并在 package.json 中进行更改

【讨论】:

以上是关于在 heroku 上部署 typeorm/typescript 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 Heroku 上部署 React 和 Django

在 Heroku 上部署 asgi 和 wsgi

如何在 Heroku 上部署 Flutter Web

在heroku上部署django网站时出错

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

如何在Heroku上部署时配置/设置命令