gpt4 book ai didi

javascript - 尝试为我的 nodejs Controller 编写我的第一个 "global"函数

转载 作者:行者123 更新时间:2023-11-30 09:33:51 25 4
gpt4 key购买 nike

我在几乎所有的 nodejs Controller 中都使用了这个函数。

该函数在文件../global/daysBetween.js 中

"use strict";
module.exports.daysBetween = (date1, date2) => {
var ONE_DAY = 1000 * 60 * 60 * 24
var date1_ms = date1.getTime()
var date2_ms = date2.getTime()
var difference_ms = Math.abs(date1_ms - date2_ms)
return Math.round(difference_ms/ONE_DAY)
}

首先,我考虑将其放入 global,但 stackoverflow 上的许多示例表明这是个坏主意。

所以我尝试将它包含到使用它的 Controller 中:

"use strict";
var mongoose = require('mongoose');
var daysBetween = require('../global/daysBetween');
exports.newBooking = function(req, callback) {
console.log("Days Between: " + daysBetween(bookingRecord.checkin,bookingRecord.checkout));
}

但是我得到这个错误:

TypeError: daysBetween is not a function

我做错了什么?

我应该将它包含在每个需要的 Controller 中吗?或者在全局范围内声明它会更好吗?

这是导出的内容:

console.log(require('../global/daysBetween'));
return;

{ daysBetween: [Function] }

最佳答案

你正在导出这个:

{
daysBetween:function...
}

尝试:

"use strict";

module.exports = (date1, date2) => {
var ONE_DAY = 1000 * 60 * 60 * 24
var date1_ms = date1.getTime()
var date2_ms = date2.getTime()
var difference_ms = Math.abs(date1_ms - date2_ms)
return Math.round(difference_ms/ONE_DAY)
}

删除 daysBetween 属性。

exports 是一个对象。当您添加 .someField 时,您将向该对象添加一个属性;如果您只想导出一个函数,则必须用您自己的函数替换导出对象。

module.exports = ()=>{ return 'exports is now a function'};

module.exports.func = ()=>{ return 'exports is an object with the function "func"'};

Tutorial on module.exports

关于javascript - 尝试为我的 nodejs Controller 编写我的第一个 "global"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44722354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com