feathersjs应用程序未在heroku上启动



我有一个应用程序,我通过github操作将其部署到heroku
但它不会启动,分别是找不到启动应用程序的编译源。

不幸的是,我是heroku的新手,我找不到可能导致这个问题的原因。

这是我的tsconfig.json

{
"compilerOptions": {
"target": "es2018",
"module": "commonjs",
"outDir": "./lib",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"composite": true,
"experimentalDecorators": true
},
"exclude": [
"test"
]
}

我的package.json有以下脚本(我只添加了对问题很重要的脚本(

"heroku-postbuild": "npm run compile",
"start": "node lib/",
"compile": "shx rm -rf lib/ && tsc"

heroku的ProcFile(自动生成(显示以下内容web npm start(从仪表板复制(

github动作

- name: Deploy Backend
uses: AkhileshNS/heroku-deploy@v3.12.12
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "the name"
heroku_email: "example@mail.com"
appdir: "./server"
env:
HD_MONOGDB_CONNECTION: ${{ secrets.MONGODB_CONNECTION }}
HD_HOST: ${{ secrets.VUE_APP_BACKEND_URL }}
HD_PORT: ${{ secrets.BACKEND_PORT }}
HD_NODE_ENV: "production"

部署还可以,我可以用heroku-cli查看文件。根据heroku的说法,它也成功地构建了。

但我在日志中看到以下错误

2022-04-12T10:06:46.016367+00:00 app[web.1]: Error: Cannot find module '/app/lib'
2022-04-12T10:06:46.016368+00:00 app[web.1]:     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
2022-04-12T10:06:46.016368+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:746:27)
2022-04-12T10:06:46.016369+00:00 app[web.1]:     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12)
2022-04-12T10:06:46.016369+00:00 app[web.1]:     at internal/main/run_main_module.js:17:47 {
2022-04-12T10:06:46.016370+00:00 app[web.1]:   code: 'MODULE_NOT_FOUND',
2022-04-12T10:06:46.016370+00:00 app[web.1]:   requireStack: []
2022-04-12T10:06:46.016371+00:00 app[web.1]: }

尽管通过tsconfig告诉node将代码构建/编译到./lib中,但文件夹并不存在。脚本似乎是从heroku(/app(中的正确文件夹运行的,因为我可以找到一个tsconfig.tsbuildinfo文件

编辑:添加了构建日志


-----> Building on the Heroku-20 stack
-----> Using buildpack: heroku/nodejs
-----> Node.js app detected

-----> Creating runtime environment

NPM_CONFIG_LOGLEVEL=error
NODE_VERBOSE=false
NODE_ENV=production
NODE_MODULES_CACHE=true

-----> Installing binaries
engines.node (package.json):  ^14.0.0
engines.npm (package.json):   >= 3.0.0

Resolving node version ^14.0.0...
Downloading and installing node 14.19.1...
Bootstrapping npm >= 3.0.0 (replacing 6.14.16)...
npm >= 3.0.0 installed

-----> Restoring cache
- node_modules

-----> Installing dependencies
Installing node modules

added 402 packages, and audited 403 packages in 10s

55 packages are looking for funding
run `npm fund` for details

3 high severity vulnerabilities

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.

-----> Build
Running heroku-postbuild

> @tasting-organizer/server@0.4.0 heroku-postbuild
> npm run compile


> @tasting-organizer/server@0.4.0 compile
> shx rm -rf lib/ && tsc


-----> Caching build
- node_modules

-----> Pruning devDependencies

up to date, audited 192 packages in 1s

13 packages are looking for funding
run `npm fund` for details

3 high severity vulnerabilities

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.

-----> Build succeeded!
-----> Discovering process types
Procfile declares types     -> (none)
Default types for buildpack -> web
-----> Compressing...
Done: 34.4M
-----> Launching...
Released v7
https://tasting-organizer.herokuapp.com/ deployed to Heroku

如果我在本地运行脚本,一切都会正常工作。

我只是在heroku控制台中手动运行这些步骤
奇怪的是,tsc没有发出任何东西,但tsc --showConfig显示了我想要的配置。我不明白为什么它不发射文件。我甚至加了--noEmit false也没有用。

为什么编译后的文件不在/app/lib/中?有什么想法吗?

我找到了解决方案,尽管我真的不确定为什么它是解决方案。

  1. tsconfig.json中将./lib添加到exclude
"exclude": [
"test",
"lib"
]
  1. 在构建之前不要删除lib文件夹
    在我的情况下,将"compile": "shx rm -rf lib/ && tsc"更改为"compile": "tsc"

现在它工作了。

相关内容

  • 没有找到相关文章

最新更新