我在几乎所有的nodejs控制器中都使用了这个函数。
该功能位于../ 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的例子说这是一个坏主意。
所以我试着把它包含在使用它的控制器中:
"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
我做错了什么?
我是否应该在每个需要的控制器中包含它?或者在全球范围内宣布它会更好吗?
这是出口的内容:
console.log(require('../global/daysBetween'));
return;
{ daysBetween: [Function] }
答案 0 :(得分:4)
您正在导出此内容:
{
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属性。
出口是一个对象。添加.someField
后,您需要在此对象中添加属性;如果你只想导出一个函数,你必须用你自己的函数替换exports对象。
module.exports = ()=>{ return 'exports is now a function'};
module.exports.func = ()=>{ return 'exports is an object with the function "func"'};