У меня был какой-то JS, который динамически импортировал бы и добавил несколько маршрутов, таких как:
let routeFiles = [
'./routes/projects',
'./routes/scraper',
'./routes/admin',
// etc
]
initRoutes(app) {
for (let fn of routeFiles) {
let routes = require(fn)
app.use('/tix', routes)
}
debug.info('init routes done')
}
Но с машинописью я получаю ошибку
An import declaration can only be used in a namespace or module.
Просмотр вокруг не даёт 'Кажется, я не могу дать четкий ответ
const mod = await require(fp)
. Это дает мне ошибку, поскольку я не могу найти модуль как .
, хотя я проверил передаваемый путь:
(node:33353) UnhandledPromiseRejectionWarning: Error: Error: Cannot find module "."
at Object.<anonymous> (/Users/dc/dev/tix/recobot/stack/backend/build/server.js:843:23)
at Generator.next (<anonymous>)
at /Users/dc/dev/tix/recobot/stack/backend/build/server.js:800:71
at new Promise (<anonymous>)
at __awaiter (/Users/dc/dev/tix/recobot/stack/backend/build/server.js:796:12)
at Object.initModels (/Users/dc/dev/tix/recobot/stack/backend/build/server.js:821:16)
at Object.<anonymous> (/Users/dc/dev/tix/recobot/stack/backend/build/server.js:527:28)
at Generator.next (<anonymous>)
at fulfilled (/Users/dc/dev/tix/recobot/stack/backend/build/server.js:497:58)
at process._tickCallback (internal/process/next_tick.js:68:7)
на основе https://www.typescriptlang.org/docs/handbook/modules.html#optional-module-loading-and-other-advanced-loading-scenarios
Я также пытался запутать:
mod = await System.import(fn)
mod.init()
та же ошибка
Error: Cannot find module './models/Projects'.
Если я подниму импорт вне основного блока кодавсе работает нормально.
import Project from "./models/Projects"
const TixBot = {
async initModels(dbc: any) {
await Project.init(dbc)
Кстати, я работаю в веб-пакете, в котором возникла эта проблема: https://github.com/webpack/webpack/issues/1599
решена с помощью
node: {
__dirname: true
},
в файле webpack.config.чувак, иногда я боюсь смотреть свысока при работе над современным JS ...
не очень полезно: машинописный текст: динамически импортировать классы
связано и интересно https://blog.atomist.com/typescript-imports/