balderdashy / sails

Realtime MVC Framework for Node.js
https://sailsjs.com
MIT License
22.84k stars 1.95k forks source link

Cannot connect to Postgres with Node v14 #7022

Open alxndrsn opened 4 years ago

alxndrsn commented 4 years ago

Node version: 14.x: tested on 14.0.0, 14.5.0, 14.7.0 Sails version (sails): 1.2.4 ORM hook version (sails-hook-orm): 2.1.1 DB adapter & version (e.g. sails-mysql@5.55.5): sails-postgresql@1.0.2


Observed

Database connection times out on app startup when using node version 14. Node 12 and 13 seem to work fine:

Working with node 12:

$ nvm use 12 && npx sails console
Now using node v12.18.2 (npm v6.14.5)

 info: Starting app in interactive mode...

 info: ·• Auto-migrating...  (drop)
 info:  ✓ Auto-migration complete.

 info: Welcome to the Sails console.
 info: ( to exit, type <CTRL>+<C> )

(node:20084) [DEP0124] DeprecationWarning: REPLServer.rli is deprecated

Broken with node 14:

$ nvm use 14 && npx sails console
Now using node v14.7.0 (npm v6.14.7)

 info: Starting app in interactive mode...

(node:19845) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
 info: ·• Auto-migrating...  (drop)
error: 
error: Error: Sails is taking too long to load.

--  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --
 Troubleshooting tips:
  -• Were you still reading/responding to an interactive prompt?
     (Whoops, sorry!  Please lift again and try to respond a bit more quickly.)

  -• Do you have a lot of stuff in `assets/`?  Grunt might still be running.
    (Try increasing the hook timeout.  Currently it is 40000.
     e.g. `sails lift --hookTimeout=80000`)

  -• Is `blueprints` a custom or 3rd party hook?
    (*If* `initialize()` is using a callback, make sure it's being called.)
--  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --  --

    at Timeout.tooLong [as _onTimeout] (/home/user/workspaces/sails/node14pg/node_modules/sails/lib/app/private/loadHooks.js:191:21)
    at listOnTimeout (internal/timers.js:551:17)
    at processTimers (internal/timers.js:494:7)

error: Could not load Sails app.
error: 
error: Tips:
error:  • First, take a look at the error message above.
error:  • Make sure you've installed dependencies with `npm install`.
error:  • Check that this app was built for a compatible version of Sails.
error:  • Have a question or need help?  (http://sailsjs.com/support)

Expected

Upgrading to latest node should not break the db connection.

Steps to recreate

(requires local postgresql and correct permissions to connect)

git clone git@github.com:alxndrsn/sails-postgres-node-14.git
cd sails-postgres-node-14
yarn
nvm install 14
nvm use 14
export DATABASE_URL=postgres://user:password@localhost/db_name
npx sails console

Possibly related

There are a number of other projects reporting issues with node 14 and pg:

It sounds like updating the pg dependency might fix the issue.

sailsbot commented 4 years ago

@alxndrsn Thanks for posting! We'll take a look as soon as possible.

In the mean time, there are a few ways you can help speed things along:

Please remember: never post in a public forum if you believe you've found a genuine security vulnerability. Instead, disclose it responsibly.

For help with questions about Sails, click here.

alxndrsn commented 4 years ago

For anyone following this and wanting an immediate fix, I had to change the sails-postgresql depedency to sails-postgresql-redacted@1.0.2-5.

If you're also using connect-pg-simple, you'll need to replace that with https://github.com/nstuyvesant/node-connect-pg-simple.git#adcb6c4642db88e6de47e3aea48a71b5ab3569fa until https://github.com/voxpelli/node-connect-pg-simple/pull/174 is merged & released.

eashaw commented 4 years ago

Thank you @alxndrsn for the workaround, we will be working on updating sails-postgresql to work with Node 14 this month

rachaelshaw commented 4 years ago

@alxndrsn @eashaw just released sails-postgresql v2.0.0, which is updated to support Node v14

GirkovArpa commented 4 years ago

Is this bounty still open? It's offering $15 to solve this issue which appears to be already solved.