У меня есть приложение Express.js, написанное на TypeScript (2.7.1), и я пытаюсь динамически импортировать модуль express-session
. Насколько я понимаю, import session from 'express-session'
должен быть эквивалентен let session = await import('express-session')
, однако статический импорт работает нормально (если установлен express-session
), а динамическая версия жалуется:
error TS2349: Cannot invoke an expression whose type lacks a call signature.
Type '{ default: typeof session; Store: typeof Store; MemoryStore: typeof MemoryStore; }'
has no compatible call signatures
Вот как выглядит мой файл после удаления статического импорта и окружения импорта try-catch
:
import express from 'express'
export class MyServer {
public app: express.Application
constructor() {
this.app = express()
this.init()
}
async init() {
try {
const session = await import('express-session')
this.app.use(session({secret: 'my_secure_secret'}))
this.app.set('hasSession', true)
} catch (e) {
console.log('Failed to load session, continue without it')
this.app.set('hasSession', false)
}
}