Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

defineService is undefined #1080

Closed
bsonmez opened this issue Aug 30, 2020 · 20 comments
Closed

defineService is undefined #1080

bsonmez opened this issue Aug 30, 2020 · 20 comments

Comments

@bsonmez
Copy link

bsonmez commented Aug 30, 2020

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"
@valicsek
Copy link

valicsek commented Aug 30, 2020

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

@rozaydin
Copy link

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

@bsonmez
Copy link
Author

bsonmez commented Aug 31, 2020

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.

@rozaydin
Copy link

rozaydin commented Sep 2, 2020

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!"); });

@karopolopoulos
Copy link

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

@gunnervj
Copy link

gunnervj commented Sep 2, 2020

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

@gunnervj
Copy link

gunnervj commented Sep 2, 2020

Resolved the issue by adding

custom:
  serverless-offline:
    useChildProcesses: true

#931

Upgraded back to 6.7.0

@bsonmez
Copy link
Author

bsonmez commented Sep 2, 2020

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?

@jonlil
Copy link

jonlil commented Sep 2, 2020

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!

@nicolaaretini
Copy link

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?

@rozaydin
Copy link

rozaydin commented Sep 2, 2020

Solved my issue as well, thanks

@zoellner
Copy link
Contributor

zoellner commented Sep 2, 2020

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

@smundro
Copy link

smundro commented Sep 4, 2020

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.

@smundro
Copy link

smundro commented Sep 4, 2020

FYI, earlier closed issue points to using allowCache to avoid error: #1075 (comment)

@kennyhyun
Copy link

kennyhyun commented Sep 21, 2020

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

@reilg
Copy link

reilg commented Sep 21, 2020

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 

@Boboss74
Copy link

Boboss74 commented Sep 25, 2020

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

Look at theses 2 comments
#864 (comment)
#864 (comment)

@souleymanedembele
Copy link

souleymanedembele commented Sep 26, 2020

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

@bsonmez
Copy link
Author

bsonmez commented Sep 26, 2020

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

@gruckionvit
Copy link

gruckionvit commented Nov 3, 2020

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.

citlacom added a commit to financial-astrology-research/trading-signal-processing that referenced this issue May 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests