MatteoGioioso / serverless-pg

A package for managing PostgreSQL connections at SERVERLESS scale
MIT License
321 stars 16 forks source link

serverless-pg with Netlify #70

Open arnaudjnn opened 2 years ago

arnaudjnn commented 2 years ago

I'm using Netlify functions for serverless

When I tried serverless-pg I had the following error:

[ERROR] Could not resolve "pg-native"
    node_modules/pg/lib/native/client.js:4:21:
      4 │ var Native = require('pg-native')

So I installed pg-native, working well locally but then I have the following error with deploy: https://answers.netlify.com/t/unable-to-publish-function-using-postgres/12293

Do you have an install with Netlify? How can I fix the error with libpq?

MatteoGioioso commented 2 years ago

Any chance you have this variable set? NODE_PG_FORCE_NATIVE https://github.com/brianc/node-postgres/blob/28ac2a17bce287cfa458153dcabe3ca06ca0e28f/packages/pg/lib/index.js#L28

I have never used Netlify myself, but I have found something: https://github.com/brianc/node-postgres/issues/1894#issuecomment-543010595

arnaudjnn commented 2 years ago

@MatteoGioioso I tried to set NODE_PG_FORCE_NATIVE but this does not solve the error.

Is it possible to use postgres instead pg as detailed here?

https://answers.netlify.com/t/continues-deployment-of-functions-with-postgresql/44730/30

MatteoGioioso commented 2 years ago

@arnaudjnn I think you should unset it.

regarding to use another library, I think it should be possible: https://github.com/MatteoGioioso/serverless-pg/blob/37f52a95139f7581b87c69797dec61899b6891dd/__tests__/index.test.js#L565

however the API must be compatible

arnaudjnn commented 2 years ago

Sorry no I haven't this variable NODE_PG_FORCE_NATIVE

How would you do to use another library like postgres ?

Would be awesome to get an example working with Netlify!

MatteoGioioso commented 2 years ago

You could try something like that

const yourDriver = require("custom-driver")

const client = new ServerlessClient({
  ...dbConfig,
  debug: true,
  library: yourDriver
});

although I see that the library you are suggesting use quite different API. I will test something and let you know.

PS: have you tried this? https://github.com/brianc/node-postgres/issues/1894#issuecomment-543030502

AWare commented 1 year ago

It may be worth considering running the library through a bundler to make this problem go away.

I've spent most of today trying to get pg through parcel without any luck, and it would certainly make some sense for this library to deliberately excise pg-native for ease of bundling.