为什么 module.exports 没有正确导出函数?
Why module.exports does not export a function properly?
我正在基于来自 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
的文件,因此您似乎不需要正确的文件。
我正在基于来自 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
的文件,因此您似乎不需要正确的文件。