Почему module.exports не экспортирует функцию должным образом?

#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 , поэтому кажется, что вам не требуется правильный файл.