为什么 module.exports 不能正确导出函数?

罗伯特·詹博斯基

我正在基于 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所以不应该有函数未定义的问题..

jfriend00

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

NodeJS / Express中的“ module.exports”和“ exports.methods”是什么意思?

module.exports:不是函数

节点js中的module.exports是否创建导出对象或函数的浅表副本或深表副本?

module.exports中new的目的是什么?

module.exports从诺言

“ module.exports = {__dirname}”如何工作,为什么工作?

module.exports导出默认值:如何以正确的方式重写?

如何从module.exports导出对象?

ES6模块的module.exports等价于什么?

如何从函数内部修改module.exports?

module.exports不包含默认导出

为什么我在开玩笑需要`module.exports`?我该如何避免呢?

正在导出从module.exports返回的对象

在Node module.exports = {}中导出一个类

“ var self = module.exports”是什么?吝啬的?

如何从module.exports访问函数

在module.exports中调用函数的上下文安全方法是什么?

module.exports.report.logon不是函数

为什么Webpack加载程序返回“ module.exports = ...”?

函数未在 nodejs 上用 module.exports 定义

module.exports = function(app) 是什么意思?

module.exports 函数不是函数

什么是 ES6 等效的 module.exports = { key: "value" }?

当我尝试将中间件函数导出到 module.exports 对象时,为什么会出现“Next is not a function”?

如何在“module.exports”中导出多个参数?

如何使打字稿导出与 module.exports 向后兼容

在 ES6 中使用 module.exports 导出多个函数

nodejs,我不能 module.exports 超过 1 个功能

Module.exports 函数在控制台日志之前执行 - 为什么?