helmet: This expression is not callable. error on typescript helmet 5.0.1
The full error is:
src/server/index.ts:6:9 - error TS2349: This expression is not callable.
Type 'typeof import("C:/try/t21/helet-issue/node_modules/helmet/dist/index")' has no call signatures.
6 app.use(helmet({ contentSecurityPolicy: false }));
~~~~~~
Previously in version 4.6.0 it works great, but in the latest helmet 5.0.1 version it does not work. /src/server/index.ts
import * as express from 'express';
import * as helmet from 'helmet';
const app = express();
app.use(helmet({ contentSecurityPolicy: false })); // this line shows the error.
app.listen(3002, () => console.log("Server started"));
Here’s my tsconfig:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/server",
"module": "commonjs",
"baseUrl": "./",
"moduleResolution": "node",
"target": "es2017",
"lib": [
"es2020",
"dom"
]
},
}
You can see this in code sandbox: https://codesandbox.io/s/s4fuq
When I change the import to:
import helmet from 'helmet';
I get a runtime error: TypeError: (0 , helmet_1.default) is not a function
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 15 (8 by maintainers)
@EvanHahn I was also seeing this issue in my project and like @GuyMev I would like to avoid modifying my
tsconfig.jsonjust for this library.But the good news, I might have a possible fix to solve everyone’s problems here. I’m not the biggest ESM/CJS/TS expert, but will open a pull request for review and see what you think.
Setting esModuleInterop to true on tsconfig.json worked for me: