#node.js #knex.js
Вопрос:
Я создаю проект, основанный на CJ’s из приложения «Кодирование садового инвентаря«. В файле миграции knex я использовал внешний файл для добавления вспомогательных функций.
tableUtils.js
function addDefaultColumns(table) {
table.timestamps(false, true)
table.datetime('deleted_at')
}
function createNameTable(knex, tableName) {
return knex.schema.createTable(tableName, table => {
table.increments().notNullable()
table.string('name').notNullable().unique()
addDefaultColumns(table)
})
}
module.exports = {
createNameTable,
addDefaultColumns
}
и в моем файле миграции:
const tableNames = require('../../src/constants/tableNames');
const { createNameTable, addDefaultColumns } = require('../../src/constants/tableNames');
exports.up = async (knex) => {
await knex.schema.createTable(tableNames.user, table => {
table.increments().notNullable()
table.string('name').notNullable()
table.string('email', 254).notNullable().unique()
table.string('password', 127).notNullable()
table.string('avatar_url', 2000)
table.string('color', 15).defaultTo('#dddddd')
table.specificType('balance', 'money').defaultTo('0')
addDefaultColumns(table)
})
};
Как только я пытаюсь запустить миграцию, knex migrate:latest
я получаю ошибку:
migration failed with error: addDefaultColumns is not a function
addDefaultColumns is not a function
TypeError: addDefaultColumns is not a function
Чего мне здесь не хватает, так как, похоже, все должно работать нормально.. Функция объявлена с function
и выше module.exports
, поэтому не должно быть проблемы с неопределенностью функции..
Комментарии:
1. Ваш код показывает , что вам требуется
tableNames
, но вы показываете файл с именемtableUtils.js
.2. боже, это так неловко..; d спасибо тебе! слишком долгий день перед экраном
3. @RobertJamborski был там
Ответ №1:
Ваш код показывает , что вам требуется tableNames
, но вы показываете файл с именем tableUtils.js
, поэтому кажется, что вам не требуется правильный файл.