У меня возникла эта проблема при попытке развернуть мой API на heroku - PullRequest
0 голосов
/ 28 марта 2020

Я установил дополнение PostgreSQL от Heroku, но я использую Knex. js на своем бэкэнде, как я использовал ранее с SQLite, и у меня появляется следующая ошибка.

Я создавал бэкэнд для сайта и мобильного приложения и пытался развернуть его на Heroku, когда в процессе разработки использовал SQLite, но подумал, что, поскольку я использовал Knex. js, я мог легко перейти на Postgres дополнение от Heroku. Я сталкиваюсь с этой проблемой, когда запускаю knex migrate:latest на postbuild.

no such file or directory, scandir '/tmp/build_46fb7aa66e7e3cea06d2f04a21ad9249/migrations'

Вот мой файл knex:

// Update with your config settings.

module.exports = {

  development: {
    client: 'sqlite3',
    connection: {
      filename: './src/database/db.sqlite'
    },
    migrations: {
      directory: './src/database/migrations'
    },
    useNullAsDefault: true
  },


  test: {
    client: 'sqlite3',
    connection: {
      filename: './src/database/test.sqlite'
    },
    migrations: {
      directory: './src/database/migrations'
    },
    useNullAsDefault: true
  },

  staging: {
    client: 'postgresql',
    connection: {
      database: 'my_db',
      user:     'username',
      password: 'password'
    },
    pool: {
      min: 2,
      max: 10
    },
    migrations: {
      tableName: 'knex_migrations'
    }
  },

  production: {
    client: 'pg',
    debug: true,
    connection: process.env.DATABASE_URL,
    pool: {
      min: 2,
      max: 10
    },
    migrations: {
      tableName: 'knex_migrations'
    },
    ssl: true
  }

};

и мои соединения

const knex = require('knex')
const configuration = require('../../knexfile')

const config = process.env.NODE_ENV


const connection = knex(configuration[config])


module.exports = connection

Миграции для тестирования и разработки работают просто отлично

Я тоже не знаю, сработает ли это после этого, поэтому, если у кого-то есть опыт, я мог бы использовать любую помощь

1 Ответ

0 голосов
/ 28 марта 2020

Похоже, что Heroku не может найти ваши миграции.

Ваша производственная конфигурация не содержит каталог миграции. Попробуйте добавить его, например,

  production: {
    client: 'pg',
    debug: true,
    connection: process.env.DATABASE_URL,
    pool: {
      min: 2,
      max: 10
    },
    migrations: {
      tableName: 'knex_migrations',
      directory: './src/database/migrations'  // <-- here
    },
    ssl: true
  }

, когда в процессе разработки я использовал SQLite, но подумал, что, поскольку я использовал Knex. js, я мог легко перейти в дополнение Postgres из Heroku

Я призываю вас использовать одну и ту же базу данных как в разработке, так и в производстве. Механизмы баз данных не являются заменой друг другу, даже если вы используете что-то вроде Knex.

...