Closed brielov closed 4 years ago
Sorry for the late reply.
Can anyone please share a repository reproducing this issue? That would make it much easier to debug.
Also, please share the output of running npx envinfo --system --binaries --npmPackages netlify-lambda
Might be related: https://github.com/netlify/netlify-lambda/issues/251 https://github.com/netlify/zip-it-and-ship-it/issues/67#issuecomment-549837499
Closing as stale. Please comment if still relevant
@erezrokah I have run into this same issue when trying to create a Netlify function for a NestJS server. Here's an example repo, which uses the NestJS TypeScript Starter Repo: https://github.com/jondpenton/netlify-lambda-resolve-dependencies.
Running yarn build:lambdas
gives this output:
yarn run v1.22.10
$ netlify-lambda build lambdas
netlify-lambda: Building functions
ModuleNotFoundError: Module not found: Error: Can't resolve '@nestjs/microservices' in '/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core'
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/webpack/lib/Compilation.js:925:10
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/webpack/lib/NormalModuleFactory.js:401:22
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/webpack/lib/NormalModuleFactory.js:130:21
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/webpack/lib/NormalModuleFactory.js:224:22
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/neo-async/async.js:2830:7
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/neo-async/async.js:6877:13
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/webpack/lib/NormalModuleFactory.js:214:25
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/enhanced-resolve/lib/Resolver.js:213:14
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/root/projects/netlify-lambda-resolve-dependencies/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:15:1)
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js:44:7
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/root/projects/netlify-lambda-resolve-dependencies/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:15:1)
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/enhanced-resolve/lib/Resolver.js:285:5
at eval (eval at create (/root/projects/netlify-lambda-resolve-dependencies/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:27:1)
at /root/projects/netlify-lambda-resolve-dependencies/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:67:43
resolve '@nestjs/microservices' in '/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core'
Parsed request is a module
using description file: /root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/package.json (relative path: .)
resolve as module
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/node_modules doesn't exist or is not a directory
/root/projects/netlify-lambda-resolve-dependencies/node_modules/node_modules doesn't exist or is not a directory
/root/projects/node_modules doesn't exist or is not a directory
/root/node_modules doesn't exist or is not a directory
/node_modules doesn't exist or is not a directory
looking for modules in /root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/node_modules
using description file: /root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/package.json (relative path: ./node_modules)
using description file: /root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/package.json (relative path: ./node_modules/@nestjs/microservices)
no extension
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/node_modules/@nestjs/microservices doesn't exist
looking for modules in /root/projects/netlify-lambda-resolve-dependencies/node_modules
using description file: /root/projects/netlify-lambda-resolve-dependencies/package.json (relative path: ./node_modules)
using description file: /root/projects/netlify-lambda-resolve-dependencies/package.json (relative path: ./node_modules/@nestjs/microservices)
no extension
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/microservices doesn't exist
.wasm
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/node_modules/@nestjs/microservices.wasm doesn't exist
.wasm
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/microservices.wasm doesn't exist
.mjs
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/node_modules/@nestjs/microservices.mjs doesn't exist
.mjs
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/microservices.mjs doesn't exist
.js
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/node_modules/@nestjs/microservices.js doesn't exist
.js
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/microservices.js doesn't exist
.json
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/node_modules/@nestjs/microservices.json doesn't exist
.json
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/microservices.json doesn't exist
.ts
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/node_modules/@nestjs/microservices.ts doesn't exist
.ts
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/microservices.ts doesn't exist
as directory
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/core/node_modules/@nestjs/microservices doesn't exist
as directory
/root/projects/netlify-lambda-resolve-dependencies/node_modules/@nestjs/microservices doesn't exist
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Running npx envinfo --system --binaries --npmPackages netlify-lambda
gives this output:
System:
OS: Linux 5.4 Ubuntu 20.04.2 LTS (Focal Fossa)
CPU: (2) x64 Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz
Memory: 5.32 GB / 7.78 GB
Container: Yes
Shell: 5.0.17 - /bin/bash
Binaries:
Node: 14.16.0 - ~/.nvm/versions/node/v14.16.0/bin/node
Yarn: 1.22.10 - ~/.nvm/versions/node/v14.16.0/bin/yarn
npm: 7.9.0 - ~/.nvm/versions/node/v14.16.0/bin/npm
npmPackages:
netlify-lambda: ^2.0.3 => 2.0.3
Hi @jondpenton, I'm not familiar with nestjs
, but shouldn't you install @nestjs/microservices
in order to reference it.
I don't see it in package.json
:
https://github.com/jondpenton/netlify-lambda-resolve-dependencies/blob/27071253411b5ba5b569d12944553160fc13b7cb/package.json#L23
@erezrokah @nestjs/microservices
isn't referenced in any files, but is listed as a peer dependency of @nestjs/core
: https://github.com/nestjs/nest/blob/3ff484d65bcf9b2d28ae11b6a7e2a603d8533d99/packages/core/package.json#L43.
If I install @nestjs/microservices
to my dev dependencies, then netlify-lambda
says it can't resolve @nestjs/websockets
. These are both peer dependencies of @nestjs/core
. It seems as if netlify-lambda
requires me to install all peer dependencies of my dependencies.
What's even worse, is it gives me similar errors for the dependencies of the peer dependencies I install. So if dependency A has peer dependencies, then I have to install those dependencies, as well as the dependencies of the peer dependencies.
This process is extremely tedious, as you have to run netlify-lambda
after each install. Is this a bug with netlify-lambda
or is there a recommendation to remedy this?
Hi @jondpenton, I think you can use npm v7
and it should install all peer dependencies by default.
Hey @erezrokah. It looks like npm v7 does install peer dependencies, but follows peerDependenciesMeta
and doesn't install optional peer dependencies. It seems that netlify-lambda
isn't checking this when resolving peer dependencies, so it throws an error when it can't find an optional peer dependency.
Hi @jondpenton, netlify-lambda
uses webpack
under the hood.
They way to handle it in is via a custom config and use the externals field.
I am having this same issue after installing @google-cloud/storage
and running netlify-lambda serve lambda
:
WARNING in ../node_modules/hash-stream-validation/index.js
Module not found: Error: Can't resolve 'fast-crc32c' in 'node_modules/hash-stream-validation'
@ ../node_modules/hash-stream-validation/index.js
@ ../node_modules/@google-cloud/storage/build/src/file.js
@ ../node_modules/@google-cloud/storage/build/src/index.js
@ ./createReferralCode.js
WARNING in ../node_modules/retry-request/index.js
Module not found: Error: Can't resolve 'request' in 'node_modules/retry-request'
@ ../node_modules/retry-request/index.js
@ ../node_modules/@google-cloud/common/build/src/util.js
@ ../node_modules/@google-cloud/common/build/src/index.js
@ ../node_modules/@google-cloud/storage/build/src/channel.js
@ ../node_modules/@google-cloud/storage/build/src/index.js
@ ./createReferralCode.js
If I ignore the warning and try to access my endpoint, I get an error saying:
TypeError: Expected signal to be an instanceof AbortSignal
I have a simple graphql function and when I run
netlify-lambda serve
it throws errors like:Module not found: Error: Can't resolve 'aws-sdk'
So I go ahead and install that module that has nothing to do with my code and when I try again:
Module not found: Error: Can't resolve 'vue'.
I'm not using vue in any way, I actually am using
graphql
without any server implementation, as raw as possible.This is the complete error stack:
And this is my actual handler