electerious / Ackee

Self-hosted, Node.js based analytics tool for those who care about privacy.
https://ackee.electerious.com
MIT License
4.2k stars 351 forks source link

v3.3.0 fails to deploy on Heroku #302

Closed shaftoe closed 2 years ago

shaftoe commented 2 years ago

šŸž Describe the bug

Pushing v3.3.0 to Heruku ends in a crash

šŸ“š To Reproduce

git push -f heroku 615693828bf00a35e57318e109610bfb36138f87:master

šŸ–¼ļø Screenshots

2021-12-05T14:24:05.952322+00:00 app[api]: Release v16 created by user X
2021-12-05T14:24:06.000000+00:00 app[api]: Build succeeded
2021-12-05T14:24:06.175085+00:00 heroku[web.1]: State changed from crashed to starting
2021-12-05T14:24:11.952783+00:00 heroku[web.1]: Starting process with command `npm run server`
2021-12-05T14:24:13.521424+00:00 app[web.1]:
2021-12-05T14:24:13.521437+00:00 app[web.1]: > ackee@3.3.0 server
2021-12-05T14:24:13.521438+00:00 app[web.1]: > node src/index.js
2021-12-05T14:24:13.521438+00:00 app[web.1]:
2021-12-05T14:24:14.600801+00:00 app[web.1]: node:internal/modules/cjs/loader:488
2021-12-05T14:24:14.600829+00:00 app[web.1]: throw e;
2021-12-05T14:24:14.600829+00:00 app[web.1]: ^
2021-12-05T14:24:14.600830+00:00 app[web.1]:
2021-12-05T14:24:14.600831+00:00 app[web.1]: Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './public/extractFiles' is not defined by "exports" in /app/node_modules/extract-files/package.json
2021-12-05T14:24:14.600831+00:00 app[web.1]: at new NodeError (node:internal/errors:371:5)
2021-12-05T14:24:14.600832+00:00 app[web.1]: at throwExportsNotFound (node:internal/modules/esm/resolve:429:9)
2021-12-05T14:24:14.600833+00:00 app[web.1]: at packageExportsResolve (node:internal/modules/esm/resolve:683:3)
2021-12-05T14:24:14.600833+00:00 app[web.1]: at resolveExports (node:internal/modules/cjs/loader:482:36)
2021-12-05T14:24:14.600833+00:00 app[web.1]: at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
2021-12-05T14:24:14.600834+00:00 app[web.1]: at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
2021-12-05T14:24:14.600835+00:00 app[web.1]: at Function.Module._load (node:internal/modules/cjs/loader:778:27)
2021-12-05T14:24:14.600836+00:00 app[web.1]: at Module.require (node:internal/modules/cjs/loader:999:19)
2021-12-05T14:24:14.600836+00:00 app[web.1]: at require (node:internal/modules/cjs/helpers:102:18)
2021-12-05T14:24:14.600837+00:00 app[web.1]: at Object.<anonymous> (/app/node_modules/apollo-upload-client/public/createUploadLink.js:18:20) {
2021-12-05T14:24:14.600837+00:00 app[web.1]: code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
2021-12-05T14:24:14.600838+00:00 app[web.1]: }
2021-12-05T14:24:14.604437+00:00 app[web.1]:
2021-12-05T14:24:14.604439+00:00 app[web.1]: Node.js v17.2.0
2021-12-05T14:24:14.788096+00:00 heroku[web.1]: Process exited with status 1
2021-12-05T14:24:14.846416+00:00 heroku[web.1]: State changed from starting to crashed

āš™ļø Environment

šŸ“‹ Additional context

It's been a long time since the last update so I might have forgotten something important in how to upgrade, sorry about that

electerious commented 2 years ago

I'm also getting this message, but just as a warning. Could be because of Node.js v17.2. Can you try it with Node.js v16 (LTS)?

shaftoe commented 2 years ago

Indeed it seems to be related with Node v17:

diff --git a/package.json b/package.json
index a4ff364..83b358d 100644
--- a/package.json
+++ b/package.json
@@ -103,6 +103,6 @@
     ]
   },
   "engines": {
-    "node": ">= 14"
+    "node": "16.x"
2021-12-07T15:19:45.538078+00:00 heroku[web.1]: State changed from crashed to starting
2021-12-07T15:19:51.341761+00:00 app[web.1]:
2021-12-07T15:19:51.341773+00:00 app[web.1]: > ackee@3.3.0 server
2021-12-07T15:19:51.341773+00:00 app[web.1]: > node src/index.js
2021-12-07T15:19:51.341773+00:00 app[web.1]:
2021-12-07T15:19:50.079125+00:00 heroku[web.1]: Starting process with command `npm run server`
2021-12-07T15:19:53.065920+00:00 app[web.1]: [Ackee] ā€ŗ ā€¦  awaiting  Connecting to http://mongodb+srv/admin:XXX/ackee?retryWrites=true&w=majority
2021-12-07T15:19:53.074307+00:00 app[web.1]: (node:22) [DEP0148] DeprecationWarning: Use of deprecated folder mapping "./public/" in the "exports" field module resolution of the package at /app/node_modules/extract-files/package.json.
2021-12-07T15:19:53.074309+00:00 app[web.1]: Update this package.json to use a subpath pattern like "./public/*".
2021-12-07T15:19:53.074310+00:00 app[web.1]: (Use `node --trace-deprecation ...` to show where the warning was created)
2021-12-07T15:19:53.874798+00:00 heroku[web.1]: State changed from starting to up
electerious commented 2 years ago

I've updated graphql-tools which was using an old version of extract-files. The next release of Ackee should work with Node.js 17. Thanks for letting me know!

shaftoe commented 2 years ago

Thank you for the quick feedback