Serverless-offline: defineService is undefined

Created on 30 Aug 2020  路  20Comments  路  Source: dherault/serverless-offline

Bug Report

Current Behavior
Until 6.5.0, It worked with no issues. Then I upgraded to 6.7.0 then downgraded to 6.6.0 because of the issue below. I had to roll back to 6.5.0 again.

It doesn't crash at the beginning. After a request comes, then it crashes.

Sample Code

offline: Failure: Cannot read property 'defineService' of undefined
TypeError: Cannot read property 'defineService' of undefined
    at Object.<anonymous> (/Users/user/Github/project/node_modules/aws-sdk/clients/sts.js:7:19)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (/Users/user/Github/project/node_modules/aws-sdk/lib/credentials/temporary_credentials.js:2:11)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (/Users/user/Github/project/node_modules/aws-sdk/lib/node_loader.js:32:1)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (/Users/user/Github/project/node_modules/aws-sdk/clients/s3.js:1:1)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (/Users/user/Github/project/handlers/storage/index.js:1:12)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (/Users/user/Github/project/handlers/index.js:6:12)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (/Users/user/Github/project/handler.js:17:25)
    at Module._compile (internal/modules/cjs/loader.js:1158:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at /Users/user/Github/project/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:80:133
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at InProcessRunner.run (/Users/user/Github/project/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:80:9)
  • file: serverless.yml
service: my-service

plugins:
  - serverless-domain-manager
  - serverless-offline

provider:
  name: aws
  runtime: nodejs12.x

functions:
  v1:
    handler: handler.v1
    name: ${self:service}-${self:custom.stage}-v1
    events:
      - http:
          path: v1/{proxy+}
          method: any
          cors: true
  • file: handler.js
module.exports.v1 = router(services.v1, async ({ service }) => {
  const userId = service.userId

  const user = {
    _id: userId,
  };

  const handlers = {
    db: new DB({ config: config.db.mongo }),
  };

  return {
    userId,
    handlers,
  };
});

Environment

    "serverless-domain-manager": "^4.2.0",
    "serverless-offline": "^6.5.0"

Most helpful comment

Resolved the issue by adding

custom:
  serverless-offline:
    useChildProcesses: true

https://github.com/dherault/serverless-offline/issues/931

Upgraded back to 6.7.0

All 20 comments

same, I downgraded to 6.5.0 works perfectly, but with 6.7.0 nope.

I have downgraded to 6.5.0 and still seeing the error

"devDependencies": {
"@types/aws-lambda": "^8.10.17",
"@types/aws-serverless-express": "^3.3.3",
"@types/node": "^10.17.28",
"@types/serverless": "^1.72.5",
"@typescript-eslint/eslint-plugin": "^3.10.1",
"@typescript-eslint/parser": "^3.10.1",
"eslint": "^7.7.0",
"fork-ts-checker-webpack-plugin": "^3.0.1",
"serverless-dotenv-plugin": "^3.0.0",
"serverless-offline": "^6.5.0",
"serverless-webpack": "^5.2.0",
"ts-loader": "^5.3.3",
"ts-node": "^8.10.2",
"typescript": "^3.2.4",
"webpack": "^4.29.0",
"webpack-node-externals": "^1.7.2"
},

offline: * /dev/ec2App (位: hello) offline: Failure: Cannot read property 'defineService' of undefined TypeError: Cannot read property 'defineService' of undefined at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/clients/sts.js:7:19) at Module._compile (internal/modules/cjs/loader.js:1256:30) at Module._extensions..js (internal/modules/cjs/loader.js:1277:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:1105:32) at Function.Module._load (internal/modules/cjs/loader.js:967:14) at Module.require (internal/modules/cjs/loader.js:1145:19) at require (internal/modules/cjs/helpers.js:75:18) at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/lib/credentials/temporary_credentials.js:2:11) at Module._compile (internal/modules/cjs/loader.js:1256:30) at Module._extensions..js (internal/modules/cjs/loader.js:1277:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:1105:32) at Function.Module._load (internal/modules/cjs/loader.js:967:14) at Module.require (internal/modules/cjs/loader.js:1145:19) at require (internal/modules/cjs/helpers.js:75:18) at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/lib/node_loader.js:33:1) at Module._compile (internal/modules/cjs/loader.js:1256:30) at Module._extensions..js (internal/modules/cjs/loader.js:1277:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:1105:32) at Function.Module._load (internal/modules/cjs/loader.js:967:14) at Module.require (internal/modules/cjs/loader.js:1145:19) at require (internal/modules/cjs/helpers.js:75:18) at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/lib/aws.js:1:1) at Module._compile (internal/modules/cjs/loader.js:1256:30) at Module._extensions..js (internal/modules/cjs/loader.js:1277:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:1105:32) at Function.Module._load (internal/modules/cjs/loader.js:967:14) at Module.require (internal/modules/cjs/loader.js:1145:19) at require (internal/modules/cjs/helpers.js:75:18) at eval (webpack-internal:///aws-sdk:1:18) at Object.aws-sdk (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:132:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at eval (webpack-internal:///./src/ec2service.ts:44:33) at Object../src/ec2service.ts (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:109:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at eval (webpack-internal:///./src/app.ts:45:20) at Object../src/app.ts (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:97:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at eval (webpack-internal:///./src/handler.ts:26:29) at Object../src/handler.ts (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:121:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at /Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:84:18 at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:85:12) at Module._compile (internal/modules/cjs/loader.js:1256:30) at Module.m._compile (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:858:23) at Module._extensions..js (internal/modules/cjs/loader.js:1277:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:861:12) at Module.load (internal/modules/cjs/loader.js:1105:32) at Function.Module._load (internal/modules/cjs/loader.js:967:14) at Module.require (internal/modules/cjs/loader.js:1145:19) at require (internal/modules/cjs/helpers.js:75:18) at /Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:80:133 at processTicksAndRejections (internal/process/task_queues.js:93:5) at InProcessRunner.run (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:80:9) (node:1173) Warning: Accessing non-existent property 'Service' of module exports inside circular dependency

I have downgraded to 6.5.0 and still seeing the error

"devDependencies": {
"@types/aws-lambda": "^8.10.17",
"@types/aws-serverless-express": "^3.3.3",
"@types/node": "^10.17.28",
"@types/serverless": "^1.72.5",
"@typescript-eslint/eslint-plugin": "^3.10.1",
"@typescript-eslint/parser": "^3.10.1",
"eslint": "^7.7.0",
"fork-ts-checker-webpack-plugin": "^3.0.1",
"serverless-dotenv-plugin": "^3.0.0",
"serverless-offline": "^6.5.0",
"serverless-webpack": "^5.2.0",
"ts-loader": "^5.3.3",
"ts-node": "^8.10.2",
"typescript": "^3.2.4",
"webpack": "^4.29.0",
"webpack-node-externals": "^1.7.2"
},

offline: * /dev/ec2App (位: hello) offline: Failure: Cannot read property 'defineService' of undefined TypeError: Cannot read property 'defineService' of undefined at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/clients/sts.js:7:19) at Module._compile (internal/modules/cjs/loader.js:1256:30) at Module._extensions..js (internal/modules/cjs/loader.js:1277:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:1105:32) at Function.Module._load (internal/modules/cjs/loader.js:967:14) at Module.require (internal/modules/cjs/loader.js:1145:19) at require (internal/modules/cjs/helpers.js:75:18) at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/lib/credentials/temporary_credentials.js:2:11) at Module._compile (internal/modules/cjs/loader.js:1256:30) at Module._extensions..js (internal/modules/cjs/loader.js:1277:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:1105:32) at Function.Module._load (internal/modules/cjs/loader.js:967:14) at Module.require (internal/modules/cjs/loader.js:1145:19) at require (internal/modules/cjs/helpers.js:75:18) at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/lib/node_loader.js:33:1) at Module._compile (internal/modules/cjs/loader.js:1256:30) at Module._extensions..js (internal/modules/cjs/loader.js:1277:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:1105:32) at Function.Module._load (internal/modules/cjs/loader.js:967:14) at Module.require (internal/modules/cjs/loader.js:1145:19) at require (internal/modules/cjs/helpers.js:75:18) at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/lib/aws.js:1:1) at Module._compile (internal/modules/cjs/loader.js:1256:30) at Module._extensions..js (internal/modules/cjs/loader.js:1277:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:1105:32) at Function.Module._load (internal/modules/cjs/loader.js:967:14) at Module.require (internal/modules/cjs/loader.js:1145:19) at require (internal/modules/cjs/helpers.js:75:18) at eval (webpack-internal:///aws-sdk:1:18) at Object.aws-sdk (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:132:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at eval (webpack-internal:///./src/ec2service.ts:44:33) at Object../src/ec2service.ts (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:109:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at eval (webpack-internal:///./src/app.ts:45:20) at Object../src/app.ts (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:97:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at eval (webpack-internal:///./src/handler.ts:26:29) at Object../src/handler.ts (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:121:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at /Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:84:18 at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:85:12) at Module._compile (internal/modules/cjs/loader.js:1256:30) at Module.m._compile (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:858:23) at Module._extensions..js (internal/modules/cjs/loader.js:1277:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:861:12) at Module.load (internal/modules/cjs/loader.js:1105:32) at Function.Module._load (internal/modules/cjs/loader.js:967:14) at Module.require (internal/modules/cjs/loader.js:1145:19) at require (internal/modules/cjs/helpers.js:75:18) at /Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:80:133 at processTicksAndRejections (internal/process/task_queues.js:93:5) at InProcessRunner.run (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:80:9) (node:1173) Warning: Accessing non-existent property 'Service' of module exports inside circular dependency

Did you clean node_modules and build it again after downgrade?

Edit:
with rm -rf node_modules. It worked for me.

Nope even with the rm -rf node_modules its failing with the same error. (initial request succeeds, consecutive ones fail)
I do have aws-sdk as a dependency removing that fixes the problem, the issue i am facing might not be the same i do not know.

offline: * /dev/health (位: ec2App) offline: Failure: Cannot read property 'defineService' of undefined TypeError: Cannot read property 'defineService' of undefined at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/clients/sts.js:7:19) at Module._compile (internal/modules/cjs/loader.js:1138:30) at Module._extensions..js (internal/modules/cjs/loader.js:1158:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:986:32) at Function.Module._load (internal/modules/cjs/loader.js:879:14) at Module.require (internal/modules/cjs/loader.js:1026:19) at require (internal/modules/cjs/helpers.js:72:18) at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/lib/credentials/temporary_credentials.js:2:11) at Module._compile (internal/modules/cjs/loader.js:1138:30) at Module._extensions..js (internal/modules/cjs/loader.js:1158:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:986:32) at Function.Module._load (internal/modules/cjs/loader.js:879:14) at Module.require (internal/modules/cjs/loader.js:1026:19) at require (internal/modules/cjs/helpers.js:72:18) at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/lib/node_loader.js:33:1) at Module._compile (internal/modules/cjs/loader.js:1138:30) at Module._extensions..js (internal/modules/cjs/loader.js:1158:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:986:32) at Function.Module._load (internal/modules/cjs/loader.js:879:14) at Module.require (internal/modules/cjs/loader.js:1026:19) at require (internal/modules/cjs/helpers.js:72:18) at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/aws-sdk/lib/aws.js:1:1) at Module._compile (internal/modules/cjs/loader.js:1138:30) at Module._extensions..js (internal/modules/cjs/loader.js:1158:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:851:44) at Module.load (internal/modules/cjs/loader.js:986:32) at Function.Module._load (internal/modules/cjs/loader.js:879:14) at Module.require (internal/modules/cjs/loader.js:1026:19) at require (internal/modules/cjs/helpers.js:72:18) at eval (webpack-internal:///aws-sdk:1:18) at Object.aws-sdk (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:132:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at eval (webpack-internal:///./src/ec2service.ts:17:19) at Object../src/ec2service.ts (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:109:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at eval (webpack-internal:///./src/app.ts:18:22) at Object../src/app.ts (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:97:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at eval (webpack-internal:///./src/handler.ts:26:31) at Object../src/handler.ts (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:121:1) at __webpack_require__ (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:20:30) at /Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:84:18 at Object.<anonymous> (/Users/rozaydin/Projects/serverless/roo-handler-2/.webpack/service/src/handler.js:85:12) at Module._compile (internal/modules/cjs/loader.js:1138:30) at Module.m._compile (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:858:23) at Module._extensions..js (internal/modules/cjs/loader.js:1158:10) at Object.require.extensions.<computed> [as .js] (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/ts-node/src/index.ts:861:12) at Module.load (internal/modules/cjs/loader.js:986:32) at Function.Module._load (internal/modules/cjs/loader.js:879:14) at Module.require (internal/modules/cjs/loader.js:1026:19) at require (internal/modules/cjs/helpers.js:72:18) at /Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:80:133 at processTicksAndRejections (internal/process/task_queues.js:97:5) at InProcessRunner.run (/Users/rozaydin/Projects/serverless/roo-handler-2/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:80:9)

My dependencies:

"dependencies": {
"aws-sdk": "^2.734.0",
"aws-serverless-express": "^3.3.8",
"axios": "^0.20.0",
"body-parser": "^1.19.0",
"express": "^4.17.1",
"source-map-support": "^0.5.10"
},
"devDependencies": {
"@types/aws-lambda": "^8.10.17",
"@types/aws-serverless-express": "^3.3.3",
"@types/node": "^10.17.28",
"@types/serverless": "^1.72.6",
"@typescript-eslint/eslint-plugin": "^3.10.1",
"@typescript-eslint/parser": "^3.10.1",
"eslint": "^7.7.0",
"fork-ts-checker-webpack-plugin": "^3.0.1",
"serverless": "^1.80.0",
"serverless-dotenv-plugin": "^3.0.0",
"serverless-offline": "^6.5.0",
"serverless-webpack": "^5.3.4",
"ts-loader": "^5.3.3",
"ts-node": "^8.10.2",
"typescript": "^4.0.2",
"webpack": "^4.44.1",
"webpack-node-externals": "^2.5.2"
},

My health endpoint:

router.get("/health", async (req, res) => { res.status(200).send("Up and Running!"); });

Can confirm I get it as well on 6.5.0. Haven't noticed the issue before today.

any resolution to this? I am also facing this all of a sudden. @6.5.0

Resolved the issue by adding

custom:
  serverless-offline:
    useChildProcesses: true

https://github.com/dherault/serverless-offline/issues/931

Upgraded back to 6.7.0

Resolved the issue by adding

custom:
serverless-offline:
useChildProcesses: true

931

Upgraded back to 6.7.0

Thank you for your advice. Where did you add this exactly?

Thank you for your advice. Where did you add this exactly?

In serverless.yaml

service: ...
custom:
  serverless-offline:
    useChildProcesses: true

And thanks for that advice, worked great!

Resolved the issue by adding

custom:
  serverless-offline:
    useChildProcesses: true

931

Upgraded back to 6.7.0

Thanks ! This was already driving me nuts.
Can you share a reason for this useChildProcesses:true solving the issue?

From the error It seemed like it was related to aws-sdk not being able to auth...
Just guessing: maybe forking child process inherits previous auth... and without that would create new process with no auth performed against aws?

Solved my issue as well, thanks

Had a similar issue using pino logger (pino-http/express-pino-logger) where without the useChildProcesses option I get a
TypeError: instance[setLevelSym] is not a function

useChildProcesses resolves the issue for us as well, but also causes request times to be an order of magnitude slower (from <50ms to >500ms), so this isn't a long term solution, I hope.

From aws-sdk, the code in question:

var Service = AWS.Service;
var apiLoader = AWS.apiLoader;

apiLoader.services['sts'] = {};
AWS.STS = Service.defineService('sts', ['2011-06-15']);

Appears that the core AWS module is being compromised at some point.

FYI, earlier closed issue points to using allowCache to avoid error: https://github.com/dherault/serverless-offline/issues/1075#issuecomment-682820809

BTW, I think package.json for 6.5.0 is "serverless-offline": "~6.5.0". Actually, "^6.5.0" can install 6.x.

https://docs.npmjs.com/misc/semver#tilde-ranges-123-12-1

Encountered this issue today using, "serverless"-offline: "^.6.7.0".

Both suggested fixes are working but useChildProcesses is slower as mentioned.

custom:
  serverless-offline:
    useChildProcesses: true # ~300ms
    allowCache: true # ~100ms 

The script from @cchamplin also fix it, no need to use useChildProcesses or allowCache.

Look at theses 2 comments
https://github.com/dherault/serverless-offline/issues/864#issuecomment-606818289
https://github.com/dherault/serverless-offline/issues/864#issuecomment-612064875

custom: serverless-offline: useChildProcesses: true
Works for me as well!

If you do not want to add useChildProcesses, it has been fixed in 6.8.0

I am also having this issue;

I have a lambda function with an API Gateway that reads from S3.

  "dependencies": {
    "aws-sdk": "^2.783.0",
    "firebase-admin": "^8.11.0",
    "serverless-offline-scheduler": "^0.4.2",
    "serverless-pseudo-parameters": "^2.5.0",
    "source-map-support": "^0.5.10"
  },
  "devDependencies": {
    "@types/aws-lambda": "^8.10.17",
    "@types/node": "^10.12.18",
    "@types/serverless": "^1.72.5",
    "fork-ts-checker-webpack-plugin": "^3.0.1",
    "serverless-dotenv-plugin": "^3.0.0",
    "serverless-offline": "^6.7.0",
    "serverless-webpack": "^5.2.0",
    "ts-loader": "^5.3.3",
    "ts-node": "^8.10.2",
    "typescript": "^3.2.4",
    "webpack": "^4.29.0",
    "webpack-node-externals": "^1.7.2"
  }
functions:yaml
  surveyAPI:
    handler: ./src/lambdas/surveyHandler.getSurveys
    memorySize: 512
    description: A description
    timeout: 180
    events:
      - http:
          method: get
          path: /survey
          private: true

My function:

import { APIGatewayProxyHandler } from 'aws-lambda';
import { S3Client } from '../lib/s3Client';
import 'source-map-support/register';

export const getSurveys: APIGatewayProxyHandler = async (_event, _context) => {
  const s3Client = new S3Client();
  const s3Response = await s3Client.get(
    'databucket',
    'surveys.json'
  )

  return {
    statusCode: 200,
    body: JSON.stringify(s3Response, null, 2),
  };
}

The first request works fine, I get back the correct response. The second request fails with;

offline: GET /qat/survey (位: surveyAPI)
offline: Failure: Cannot read property 'defineService' of undefined
TypeError: Cannot read property 'defineService' of undefined
    at Object.<anonymous> (/Users/user.name/workdir/project-name/node_modules/aws-sdk/clients/sts.js:7:19)
    at Module._compile (internal/modules/cjs/loader.js:1015:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Module.require (internal/modules/cjs/loader.js:903:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/Users/user.name/workdir/project-name/node_modules/aws-sdk/lib/credentials/temporary_credentials.js:2:11)
    at Module._compile (internal/modules/cjs/loader.js:1015:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Module.require (internal/modules/cjs/loader.js:903:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/Users/user.name/workdir/project-name/node_modules/aws-sdk/lib/node_loader.js:33:1)
    at Module._compile (internal/modules/cjs/loader.js:1015:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Module.require (internal/modules/cjs/loader.js:903:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/Users/user.name/workdir/project-name/node_modules/aws-sdk/lib/aws.js:1:1)
    at Module._compile (internal/modules/cjs/loader.js:1015:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Module.require (internal/modules/cjs/loader.js:903:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at eval (webpack-internal:///aws-sdk:1:18)
    at Object.aws-sdk (/Users/user.name/workdir/project-name/.webpack/service/src/lambdas/surveyHandler.js:120:1)
    at __webpack_require__ (/Users/user.name/workdir/project-name/.webpack/service/src/lambdas/surveyHandler.js:20:30)
    at eval (webpack-internal:///./src/lib/s3Client.ts:3:65)
    at Module../src/lib/s3Client.ts (/Users/user.name/workdir/project-name/.webpack/service/src/lambdas/surveyHandler.js:109:1)
    at __webpack_require__ (/Users/user.name/workdir/project-name/.webpack/service/src/lambdas/surveyHandler.js:20:30)
    at eval (webpack-internal:///./src/lambdas/surveyHandler.ts:3:71)
    at Module../src/lambdas/surveyHandler.ts (/Users/user.name/workdir/project-name/.webpack/service/src/lambdas/surveyHandler.js:97:1)
    at __webpack_require__ (/Users/user.name/workdir/project-name/.webpack/service/src/lambdas/surveyHandler.js:20:30)
    at /Users/user.name/workdir/project-name/.webpack/service/src/lambdas/surveyHandler.js:84:18
    at Object.<anonymous> (/Users/user.name/workdir/project-name/.webpack/service/src/lambdas/surveyHandler.js:87:10)
    at Module._compile (internal/modules/cjs/loader.js:1015:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Module.require (internal/modules/cjs/loader.js:903:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at /Users/user.name/workdir/project-name/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:80:133
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at InProcessRunner.run (/Users/user.name/workdir/project-name/node_modules/serverless-offline/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js:80:9)
//s3Client.ts
import { S3 } from 'aws-sdk';

type PutObjectRequest = S3.Types.PutObjectRequest;
type PutObjectOutput = S3.Types.PutObjectOutput;

export class S3Client {
  protected client: S3;

  public constructor() {
    this.client = new S3();
  }

  public async put(bucket: string, fileName: string, contents: string): Promise<PutObjectOutput | null> {
    const request: PutObjectRequest = {
        Bucket: bucket,
        Key: fileName,
        Body: contents,
        ContentType: 'application/json; charset=utf-8',
        ACL: 'private',
        CacheControl: 'max-age=60'
    };

    try {
      const data = await this.client.putObject(request).promise();

      if (!data) {
        throw Error(`Writing file ${fileName} to bucket ${bucket} failed.`);
      }

      return data;
    } catch (error) {
      console.error(`Error when writing ${fileName} to bucket ${bucket}`, error);
      return null;
    }
  }

  public async get(bucket: string, fileName: string): Promise<object | null> {
    const params = {
      Bucket: bucket,
      Key: fileName,
    };

    try {
      const data = await this.client.getObject(params).promise();

      if (!data || !data.Body) {
        throw Error(`Reading file ${fileName} from bucket ${bucket} failed.`);
      }

      const body = data.Body?.toString('utf-8')

      return JSON.parse(body);
    } catch (error) {
      console.error(`Error when reading ${fileName} from bucket ${bucket}`, error);
      return null;
    }
  }
}

If anyone has any ideas, let me know. Will keep working on it and post my solution.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Dong9769 picture Dong9769  路  4Comments

stonebraker picture stonebraker  路  3Comments

aldofunes picture aldofunes  路  3Comments

adambiggs picture adambiggs  路  4Comments

yareyaredesuyo picture yareyaredesuyo  路  4Comments