Как упаковать миграции knex в модуль? - PullRequest
0 голосов
/ 25 августа 2018

У меня есть проект Serverless Framework с помощью serverless-webpack. Webpack красиво упаковывает само приложение.

Я настроил лямбды, чтобы попытаться выполнить миграцию после обновления, как описано в сообщении в блоге: https://spin.atomicobject.com/2018/01/06/database-migration-aws-lambda/

Код написан на ES6, и безсерверный фреймворк запускает его через babel-загрузчик webpack. Я также настроил веб-пакет для включения файлов миграции в комплект, скопировав их в нужную папку:

plugins: [
    new CopyWebpackPlugin([{ from: './src/migrations/*.js', to: '' }], {}),
]

Когда я получаю файлы в нужной папке, чтобы их можно было найти, я получаю эту ошибку:

Error running migrations: Error: Cannot find module '.../.webpack/service/src/migrations/20180512154816_create-parameters.js'

Я попытался включить папку migrations в package.json в качестве зависимости (migrations: './src/migrations'). Я попытался запросить все файлы из файла, в котором вызывается функция withDB, но та же ошибка.

Файлы миграции содержат экспорты вверх и вниз:

exports.up = function (knex, Promise) {
  ..
};

exports.down = function (knex, Promise) {
  ..
};

Вопрос в том, что я мог бы создать модуль, который мог бы поставляться с развертыванием без сервера, чтобы knex смог найти модули ..

Создав файл index.js в папке миграций, которая каким-либо образом экспортирует все миграции? require ('./igration-file.js') не работает.

...