我不想上传预编译的dist目录,而是想在服务器端编译src。
下面是我在package.json中的脚本:
"scripts": {
"test": "echo \"No test specified\" && exit 0",
"start": "node dist/app.js",
"postinstall": "tsc"
}
以下是相关性:
"dependencies": {
"@types/express": "^4.11.1",
"@types/pg": "^7.4.4",
"@types/socket.io": "^1.4.31",
"body-parser": "^1.18.2",
"express": "^4.16.2",
"pg": "^7.4.1",
"socket.io": "^2.0.4",
"tslint": "^5.9.1",
"typescript": "^2.7.2"
}
由于“npm install将在安装期间将node_modules/.bin文件夹添加到PATH环境变量”,Heroku应该能够直接调用它。
但我得到的错误是:
Building dependencies
Installing node modules (package.json + package-lock)
> bilgi-yarismasi@1.0.0 postinstall /tmp/build_afa42c7943d4b71d2b48a016ae3b9e50
> tsc
sh: 1: tsc: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! bilgi-yarismasi@1.0.0 postinstall: `tsc`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the bilgi-yarismasi@1.0.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /tmp/npmcache.LTxbD/_logs/2018-02-25T10_36_06_374Z-debug.log
-----> Build failed
7条答案
按热度按时间ut6juiuv1#
您需要从npm脚本调用
tsc
,否则Heroku会尝试查找名为tsc
的全局依赖项。在
package.json
中创建新的npm脚本:现在将
"postinstall": "tsc"
替换为:7cwmlq892#
类型脚本应作为设备依赖项安装
在您的proc文件中有
web: node server.js
确保将npm build添加为安装后脚本
告诉
npm
typescript安装在本地将修复tsc找不到的问题,因为npm正在尝试在heroku上全局查找它。像这样。
ecr0jaav3#
我花了一段时间把我的简单打字脚本create-react-app部署到Heroku上。
package.json -根本不需要安装后配置
在命令行中为您的应用程序运行install buildpack:heroku构建包:添加zidizei/打字脚本heroku构建包:添加heroku/节点js
您还可以搜索运行的构建包:heroku构建包:搜索打字脚本
我的服务器如下所示(/root/server.js)
package.json
同样,在推到heroku之前,运行“npm run build”。
我的解决方案不会工作,如果你要使用webpack开发服务器,它必须是自定义服务器,在我的情况下,它是EXPRESS。
xt0899hw4#
只需将typescript安装为依赖项即可
jljoyd4f5#
在package.json中为我
对我有用。
mrwjdhj36#
有2个解决方案,我发现这个问题可行:-
1.将typescript从devDependencies移动到依赖项对象中. json
1.在您的应用上安装一个可以运行ts命令的Heroku构建包。您可以在elements.heroku.com上搜索Heroku构建包。添加过程非常简单。
gblwokeq7#
我将typescript作为devDependency安装在Package.json中: