graphile / postgraphile-lambda-example

Simple serverless / Lambda example with caching and lightweight bundle
141 stars 20 forks source link

Internal error when hitting endpoint #17

Open jrrbru opened 4 years ago

jrrbru commented 4 years ago

I'm trying to get a manually-configured Lambda up using this example. When I hit the gateway API endpoint, I get this error in the CloudWatch logs:

 "TypeError: Cannot read property 'indexOf' of undefined",
        "    at Function.getFileName (webpack:///./node_modules/bindings/bindings.js?:178:16)",
        "    at bindings (webpack:///./node_modules/bindings/bindings.js?:82:48)",
        "    at Object.eval (webpack:///./node_modules/libpq/index.js?:1:147)",
        "    at eval (webpack:///./node_modules/libpq/index.js?:361:30)",
        "    at Object../node_modules/libpq/index.js (/var/task/index.js:3785:1)",
        "    at __webpack_require__ (/var/task/index.js:20:30)",
        "    at eval (webpack:///./node_modules/pg-native/index.js?:1:13)",
        "    at Object../node_modules/pg-native/index.js (/var/task/index.js:5848:1)",
        "    at __webpack_require__ (/var/task/index.js:20:30)",
        "    at eval (webpack:///./node_modules/pg/lib/native/client.js?:11:14)"

My postgraphileOptions.js are as follows:

exports.options = {
  dynamicJson: true,
  cors: true,
  graphiql: false,
  graphqlRoute: '/graphql',
  externalUrlBase: `/${process.env.AWS_STAGE}`,

  // If consuming JWT:
 // jwtSecret: process.env.JWT_SECRET || String(Math.random()),
  // If generating JWT:
  //jwtPgTypeIdentifier: process.env.JWT_PG_TYPE_IDENTIFIER,

  /* If you want to enable GraphiQL, you must use `externalUrlBase` so PostGraphile
   * knows where to tell the browser to find the assets.  Doing this is
   * strongly discouraged, you should use an external GraphQL client instead.

    graphiql: true,
    enhanceGraphiql: true,
    graphqlRoute: '/',
    graphiqlRoute: '/graphiql',
  */
};

I'd appreciate any help anyone could give.

benjie commented 4 years ago

Are you using yarn or npm? It might be worth using yarn and using this specific lockfile just in case one of the dependencies broke something.

benjie commented 4 years ago

Also you seem to be using pg-native; I recommend against using pg-native - it's normally slower than the JS version and harder to trace.

jrrbru commented 4 years ago

Hi Benjie. Thanks for getting back to me. I'm using yarn so it should be using the lockfile in the repo.

How do I tell it not to use pg-native? I don't think I changed anything around that dependency.

Finally, would this have anything to do with building the lambda on Windows?

benjie commented 4 years ago

I'm afraid I don't know the answers to your questions. It definitely worked last time I tried it, but that was months ago.

We have this which "forces native":

https://github.com/graphile/postgraphile-lambda-example/blob/2b1a9fb3f4f91ede37f52546219cdffd871485b7/webpack.config.js#L21

But that should be overridden by this, which uses the JS client only:

https://github.com/graphile/postgraphile-lambda-example/blob/2b1a9fb3f4f91ede37f52546219cdffd871485b7/webpack.config.js#L28

It looks, however, like your one is referencing pg/lib/native/client.js rather than pg/lib/native/index.js. Not sure if this is relevant.