jeremydaly / serverless-cloudside-plugin

Serverless plugin for using cloudside resources during local development
47 stars 16 forks source link

Enhancement: Better Error Handling for Functions that don't exist #7

Open jvanalst opened 5 years ago

jvanalst commented 5 years ago

Hi,

So I recently renamed one of my serverless functions and instead of giving a friendly helpful error when invoking cloudside, I got:

vanalsti@serverless$ sls invoke cloudside -f addUserReport
Serverless: Loading cloudside resources for 'examvis-dev' stack.

  Type Error ---------------------------------------------

  TypeError: Cannot read property 'environment' of undefined
      at Object.keys.map.fn (/Users/vanalsti/Projects/examvis-for-eclass/serverless/node_modules/serverless-cloudside-plugin/index.js:165:49)
      at Array.map (<anonymous>)
      at InvokeCloudside.loadCloudsideEnvVars (/Users/vanalsti/Projects/examvis-for-eclass/serverless/node_modules/serverless-cloudside-plugin/index.js:164:28)
      at InvokeCloudside.tryCatcher (/Users/vanalsti/Projects/examvis-for-eclass/serverless/node_modules/bluebird/js/release/util.js:16:23)
      at Promise._settlePromiseFromHandler (/Users/vanalsti/Projects/examvis-for-eclass/serverless/node_modules/bluebird/js/release/promise.js:517:31)
      at Promise._settlePromise (/Users/vanalsti/Projects/examvis-for-eclass/serverless/node_modules/bluebird/js/release/promise.js:574:18)
      at Promise._settlePromiseCtx (/Users/vanalsti/Projects/examvis-for-eclass/serverless/node_modules/bluebird/js/release/promise.js:611:10)
      at _drainQueueStep (/Users/vanalsti/Projects/examvis-for-eclass/serverless/node_modules/bluebird/js/release/async.js:142:12)
      at _drainQueue (/Users/vanalsti/Projects/examvis-for-eclass/serverless/node_modules/bluebird/js/release/async.js:131:9)
      at Async._drainQueues (/Users/vanalsti/Projects/examvis-for-eclass/serverless/node_modules/bluebird/js/release/async.js:147:5)
      at Immediate.Async.drainQueues (/Users/vanalsti/Projects/examvis-for-eclass/serverless/node_modules/bluebird/js/release/async.js:17:14)
      at runCallback (timers.js:810:20)
      at tryOnImmediate (timers.js:768:5)
      at processImmediate [as _immediateCallback] (timers.js:745:5)

If I do a local invocation instead I get a nice simple error that tells me exactly what the problem is:

vanalsti@serverless$ sls invoke local -f addUserReport

  Serverless Error ---------------------------------------

  Function "addUserReport" doesn't exist in this Service

I would think that typos like this would be an extremely common user error. It'd be nice if cloudside reported something friendly and usable in these instances.