【问题标题】:Why module.exports does not export a function properly?为什么 module.exports 不能正确导出函数?
【发布时间】:2021-08-29 16:21:24
【问题描述】:

我正在根据来自 Coding Garden Inventory App 的 CJ 构建一个项目。在一个 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 声明,因此不应该存在函数未定义的问题。

【问题讨论】:

  • 您的代码显示您需要tableNames,但您显示了一个名为tableUtils.js 的文件。
  • 天哪,太尴尬了..;会谢谢你!屏幕前一天太久了
  • @RobertJamborski 去过那里

标签: node.js knex.js


【解决方案1】:

您的代码显示您需要 tableNames,但您显示了一个名为 tableUtils.js 的文件,因此您似乎不需要正确的文件。

【讨论】:

    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2018-06-24
    相关资源
    最近更新 更多