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)
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
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"
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: true931
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: true931
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.
Most helpful comment
Resolved the issue by adding
https://github.com/dherault/serverless-offline/issues/931
Upgraded back to 6.7.0