在 heroku 中部署 Loopback 4,找不到 lb-tsc 错误
Loopback 4 deployment in heroku, lb-tsc not found error
我正在尝试将环回 4 应用程序部署到 heroku 中。
但是在发布它之后 npm-start 命令在 heroku 控制台中不起作用。
它的投掷 sh: 1: 未找到 lb-tsc。
package.json如下
"devDependencies": {
"@loopback/build": "^3.0.0",
"@loopback/eslint-config": "^5.0.0",
"@loopback/testlab": "^1.10.0",
"@types/node": "^10.17.6",
"@typescript-eslint/eslint-plugin": "^2.10.0",
"@typescript-eslint/parser": "^2.10.0",
"eslint": "^6.7.2",
"eslint-config-prettier": "^6.7.0",
"eslint-plugin-eslint-plugin": "^2.1.0",
"eslint-plugin-mocha": "^6.2.2",
"source-map-support": "^0.5.16",
"typescript": "~3.7.3"},
"scripts": {
"build": "lb-tsc",
"build:watch": "lb-tsc --watch",
"clean": "lb-clean dist *.tsbuildinfo",
.......
"lb-tsc": "lb-tsc",
"postinstall": "npm run lb-tsc"
}
尝试在命令行中安装:
npm i -g @loopback/cli
npm i -g @loopback/build
我在 macOS 中通过命令行使用它。
我在某处读到在 Procfile 中将 web: slc run
替换为 web: node .
,它似乎在 Heroku 中有效!我确实看到了资源管理器并且可以使用所有端点。
我也在这个 Github 问题中提到了这一点:
https://github.com/strongloop/loopback.io/issues/810
我尝试了很多解决方案,当我执行以下操作时它会起作用:
确保 heroku 在您的终端中有一个 nodeJs builpack 运行
heroku buildpacks:set heroku/nodejs
然后,在项目的根目录中创建一个 Procfile 并添加:
web: node index.js
最后添加一个 heroku-postbuild 脚本:
"heroku-postbuild": "npm run build"
希望对您有所帮助!
当 heroku 运行s 节点应用程序 process.env.NODE_ENV 的值为“生产”时,您可以通过 heroku 终端 bash 检查它输入 node 然后 process.env
这意味着开发依赖性没有得到解决。
下面的步骤对我来说很好
- 打开 package.json 文件,从开发依赖部分复制所有内容并将其粘贴到 package.json
中的依赖部分
- git 添加。然后 git 提交然后 git push heroku master
另一个解决方案:
使用 git 推送 heroku master 将文件推送到 heroku 后,从 https://dashboard.heroku.com/ 转到 heroku 终端并启动控制台,然后 运行 命令 node dist/index.js 因此此命令将启动 loopBack 应用程序,确保 dist 文件夹可用。
在包含 web: node .
的项目的根目录中创建一个 Procfile
为我解决了这个问题。没有它,Heroku 将默认通过调用 npm run
来启动应用程序,它会尝试 运行 构建过程,并且由于 @loopback/build
默认设置为开发依赖项,这会导致lb-tsc not found
错误。
我正在尝试将环回 4 应用程序部署到 heroku 中。 但是在发布它之后 npm-start 命令在 heroku 控制台中不起作用。 它的投掷 sh: 1: 未找到 lb-tsc。 package.json如下
"devDependencies": {
"@loopback/build": "^3.0.0",
"@loopback/eslint-config": "^5.0.0",
"@loopback/testlab": "^1.10.0",
"@types/node": "^10.17.6",
"@typescript-eslint/eslint-plugin": "^2.10.0",
"@typescript-eslint/parser": "^2.10.0",
"eslint": "^6.7.2",
"eslint-config-prettier": "^6.7.0",
"eslint-plugin-eslint-plugin": "^2.1.0",
"eslint-plugin-mocha": "^6.2.2",
"source-map-support": "^0.5.16",
"typescript": "~3.7.3"},
"scripts": {
"build": "lb-tsc",
"build:watch": "lb-tsc --watch",
"clean": "lb-clean dist *.tsbuildinfo",
.......
"lb-tsc": "lb-tsc",
"postinstall": "npm run lb-tsc"
}
尝试在命令行中安装:
npm i -g @loopback/cli
npm i -g @loopback/build
我在 macOS 中通过命令行使用它。
我在某处读到在 Procfile 中将 web: slc run
替换为 web: node .
,它似乎在 Heroku 中有效!我确实看到了资源管理器并且可以使用所有端点。
我也在这个 Github 问题中提到了这一点: https://github.com/strongloop/loopback.io/issues/810
我尝试了很多解决方案,当我执行以下操作时它会起作用:
确保 heroku 在您的终端中有一个 nodeJs builpack 运行
heroku buildpacks:set heroku/nodejs
然后,在项目的根目录中创建一个 Procfile 并添加:
web: node index.js
最后添加一个 heroku-postbuild 脚本:
"heroku-postbuild": "npm run build"
希望对您有所帮助!
当 heroku 运行s 节点应用程序 process.env.NODE_ENV 的值为“生产”时,您可以通过 heroku 终端 bash 检查它输入 node 然后 process.env 这意味着开发依赖性没有得到解决。
下面的步骤对我来说很好
- 打开 package.json 文件,从开发依赖部分复制所有内容并将其粘贴到 package.json 中的依赖部分
- git 添加。然后 git 提交然后 git push heroku master
另一个解决方案: 使用 git 推送 heroku master 将文件推送到 heroku 后,从 https://dashboard.heroku.com/ 转到 heroku 终端并启动控制台,然后 运行 命令 node dist/index.js 因此此命令将启动 loopBack 应用程序,确保 dist 文件夹可用。
在包含 web: node .
的项目的根目录中创建一个 Procfile
为我解决了这个问题。没有它,Heroku 将默认通过调用 npm run
来启动应用程序,它会尝试 运行 构建过程,并且由于 @loopback/build
默认设置为开发依赖项,这会导致lb-tsc not found
错误。