serverless-bundle icon indicating copy to clipboard operation
serverless-bundle copied to clipboard

v4.2.3 - Nested Services - Serverless package at root doesn't work

Open bgrand-ch opened this issue 3 years ago • 0 comments

Hello, thanks for this amazing plugin!

I would like to use this monorepo structure:

[root]

  • common/
    • helper1.js
    • helper2.js
  • packages/
    • package1/
      • package.json
      • serverless.yml
      • lambda1.js
      • lambda2.js
    • package2/
      • package.json
      • serverless.yml
      • lambda1.js
      • lambda2.js
  • package.json
  • serverless.yml
  • seed.yml
  • .eslintrc.js

...and run yarn build (serverless package script) at the root. Unfortunately, it doesn't work. I have this error message:

yarn run v1.22.10
$ serverless package
Serverless: Cleaning dependency symlinks
Serverless: Creating dependency symlinks
Serverless: Bundling with Webpack...

  Webpack Options Validation Error -----------------------

  WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
   - configuration.entry should be an non-empty object.
     - Multiple entry bundles are created. The key is the chunk name. The value can be a string or an array.
      at webpack (C:\Users\username\Documents\project-name\node_modules\webpack\lib\webpack.js:31:9)
      at C:\Users\username\Documents\project-name\node_modules\serverless-webpack\lib\compile.js:25:39
      at tryCatcher (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\util.js:16:23)
      at Function.Promise.fromNode.Promise.fromCallback (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\promise.js:209:30)
      at webpackCompile (C:\Users\username\Documents\project-name\node_modules\serverless-webpack\lib\compile.js:25:20)
      at BbPromise.map.concurrency.concurrency (C:\Users\username\Documents\project-name\node_modules\serverless-webpack\lib\compile.js:41:43)
      at tryCatcher (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\util.js:16:23)
      at MappingPromiseArray._promiseFulfilled (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\map.js:68:38)
      at MappingPromiseArray.PromiseArray._iterate (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\promise_array.js:115:31)
      at MappingPromiseArray.init (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\promise_array.js:79:10)
      at MappingPromiseArray._asyncInit (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\map.js:37:10)
      at _drainQueueStep (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\async.js:97:12)
      at _drainQueue (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\async.js:86:9)
      at Async._drainQueues (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\async.js:102:5)
      at Immediate.Async.drainQueues [as _onImmediate] (C:\Users\username\Documents\project-name\node_modules\bluebird\js\release\async.js:15:14)
      at processImmediate (internal/timers.js:461:21)

serverless.yml at root is used to configure serverless plugins.

Is there a way to use the monorepo structure above?

Root package.json content:

{
  "private": true,
  "name": "project-name",
  "version": "1.0.0",
  "scripts": {
    "dev": "serverless offline start --noPrependStageInUrl",
    "build": "serverless package"
  },
  "devDependencies": {
    "eslint-config-standard": "16.0.2",
    "serverless-bundle": "4.2.3",
    "serverless-offline": "6.9.0",
    "serverless-seed": "0.3.13"
  },
  "dependencies": {
    "lambda-log": "2.4.0"
  },
  "license": "MIT"
}

bgrand-ch avatar Apr 13 '21 06:04 bgrand-ch