требуют (path.resolve (filePath)) для импорта оператора - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть скрипт автозагрузки для приложения ExpressJS, написанный на JS, и в настоящее время мы переходим на TypeScript

export const loadModels = () => {
  glob('modules/*/**.model.js', (err, files) => {
    if (!err) {
      files.forEach((filePath) => {
        require(path.resolve(filePath));
      });
    }
  });
};
export const loadRoutes = (app: express.Application) => {
  glob('modules/*/**.routes.js', (err, files) => {
    if (!err) {
      files.forEach((filePath) => {
        require(path.resolve(filePath))(app);
      });
    }
  });
};

Как изменить require(path.resolve(filePath)); и require(path.resolve(filePath))(app); на import оператор?


Это пример файла маршрута

import config from './../../config';
import express from 'express';
import QuestionCtrl from './question.controller';
import { EventEmitter } from 'events';

export default (app: express.Application, events: EventEmitter) => {
  const questionCtrl = new QuestionCtrl(events);
  app.route(`${config.app.apiBase}/questions`).post(questionCtrl.create);
};

1 Ответ

0 голосов
/ 13 февраля 2019

Возможно, вы можете использовать динамический импорт .Например:

export const loadRoutes = async (app: express.Application) => {
  glob('modules/*/**.routes.js', async (err, files) => {
    if (!err) {
      for (filePath of files) {
        const route = await import(path.resolve(filePath));
        route(app);
      };
    }
  });
};
...