我正在开发一个特快专递应用程序(打字本)和一个用创建-反应-应用程序(在js中)引导的react应用程序。目录结构是这里。服务器目录包含服务器的代码,该代码位于server/src内部,并以类型记录(在构建时输出到server/dist )编写。类似地,react的代码在/src内部,在构建时生成/build目录。
问题是当部署到heroku时,命令tsc无法工作,因此生成失败的堆栈跟踪是-
2020-11-29T10:11:12.328622+00:00 app[web.1]: > cd server && yarn start
2020-11-29T10:11:12.781818+00:00 app[web.1]: yarn run v1.22.10
2020-11-29T10:11:12.832721+00:00 app[web.1]: $ tsc & node .
2020-11-29T10:11:12.850144+00:00 app[web.1]: /bin/sh: 1: tsc: not found
2020-11-29T10:11:12.905249+00:00 app[web.1]: internal/modules/cjs/loader.js:303
2020-11-29T10:11:12.905252+00:00 app[web.1]: throw err;
2020-11-29T10:11:12.905253+00:00 app[web.1]: ^
2020-11-29T10:11:12.905253+00:00 app[web.1]: 如何将其包含在package.json中,以便在heroku部署环境中识别该命令。
React应用程序的Package.json脚本是
"scripts": {
"startClient": "react-scripts start",
"buildClient": "react-scripts build",
"build": "react-scripts build && (cd server && yarn install)",
"start":"cd server && yarn start",
"devServer":"cd server && yarn dev",
"tsc": "tsc", // 1)
"postinstall": "yarn tsc" // 2)
},根据如何在Heroku安装后编译类型记录?的建议,添加1和2。
服务器应用程序的package.json脚本是
"scripts": {
"build":"tsc",
"start":"tsc & node .", // this is the command which fails
"dev":"tsc -w & nodemon ."
},我知道我必须配置postinstall,这样才能识别tsc,但是我无法理解Package.json的脚本应该添加到哪个脚本中呢?如果您能澄清添加到哪一个中,以及为什么这样做,tsc就不被认可了,我将不胜感激。或者,我可以直接使用npx tsc,还是不推荐使用?
发布于 2022-05-10 22:17:58
我遇到了一个类似的问题,我不确定它是否与你遇到的一样,但无论如何张贴,以防止它对其他人有帮助。
我正在使用heroku/nodejs构建包,它似乎按照以下顺序运行任务:
构建成功完成后,容器将使用命令npm 'start‘启动,在您的示例中,该命令调用tsc命令,如果您将其安装为dev依赖项(因为它是被修剪的),tsc命令就不再存在。
我的解决方案是将tsc移出起始步骤,并将其保留为node .。
https://stackoverflow.com/questions/65060049
复制相似问题