微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么tsc无法在Heroku中运行?

如何解决为什么tsc无法在Heroku中运行?

我有一个React Express TypeScript应用程序,我一直在努力将其部署到Heroku。目的是在不手动创建客户端build(反应脚本)和服务器dist(tsc)文件夹的情况下部署应用程序,即应在Heroku部署期间构建这些文件夹。目前,build文件夹已成功构建,但dist文件夹尚未成功构建。我已经通过在bash模式下运行已部署的应用程序并遍历文件夹进行了双重检查。 tsc似乎不在服务器端运行,但是在部署过程中没有与此相关的警告或错误

为了提供一些概述,我具有以下文件夹结构(为简洁起见,省略了许多文件夹和文件):

|-- client
|   |-- public
|   |-- src
|   |-- package.json
|   '-- tsconfig.json
|-- server
|   |-- dist <-- **THIS FOLDER DOES NOT BUILD DURING DEPLOYMENT**
|   |-- src
|   |-- package.json
|   '-- tsconfig.json
'-- package.json

我的package.json文件(在根文件夹中)如下所示:

{
  ...,"scripts": {
    "start": "node server/dist/index.js","tsc": "tsc","build": "react-scripts build","heroku-prebuild": "npm install --prefix server && npm install --prefix client","heroku-postbuild": "NPM_CONfig_PRODUCTION=false && NODE_ENV=production && npm run tsc --prefix server && npm run build --prefix client"
  },...,"engines": { 
    "node": "12.13.1","npm": "6.12.1"
  }
}

...和server/tsconfig.json文件如下:

{
  "compilerOptions": {
    "target": "es6","module": "commonjs","outDir": "dist","strict": true,"esModuleInterop": true,"skipLibCheck": true,"forceConsistentCasingInFileNames": true 
  },"exclude": [
    "dist","node_modules"
  ],"include": [
    "src"
  ]
}

我的理解是npm run tsc --prefix server中的heroku-postbuild应该可以解决问题,但事实并非如此。我可能在这里错过了一些东西。也许我的文件夹结构不正确,但是我觉得部署应用程序应该不是问题。

如果能获得任何帮助或指向正确方向的指示,我将非常感激。

编辑: 我还应该提到TypeScript已作为依赖项添加server/package.json中:

{
  ...,"devDependencies": {
    "@typescript-eslint/eslint-plugin": "^4.2.0","eslint": "^7.9.0","eslint-config-airbnb-base": "^14.2.0","eslint-plugin-import": "^2.22.0","nodemon": "^2.0.4"
  },"dependencies": {
    "@types/chai": "^4.2.13","@types/express": "^4.17.8","@types/jest": "^26.0.14","@types/socket.io": "^2.1.11","@types/socket.io-client": "^1.4.34","@types/supertest": "^2.0.10","@typescript-eslint/parser": "^4.4.1","body-parser": "^1.19.0","chai": "^4.2.0","express": "^4.17.1","jest": "^26.5.3","socket.io": "^2.3.0","socket.io-client": "^2.3.1","supertest": "^5.0.0","ts-jest": "^26.4.1","typescript": "^4.0.3"
  }
}

解决方法

我仍然没有找到解决方法。所以我最终找到了解决方法。 万一有人在为同样的事情而苦苦挣扎,我所做的就是在服务器上手动运行tsc以创建server/dist文件夹。这不是我一直在寻找的解决方案,但现在可以使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。