Javascript 试着写下我的第一句话;“全球”;用于my nodejs控制器的函数
我在几乎所有的nodejs控制器中都使用了这个函数 函数位于文件../global/daysBetween.js中Javascript 试着写下我的第一句话;“全球”;用于my nodejs控制器的函数,javascript,node.js,Javascript,Node.js,我在几乎所有的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
"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] }
您正在导出以下内容:
{
daysBetween:function...
}
尝试:
删除daysBetween属性
导出是一个对象。当您添加.someField
时,您正在将属性添加到此对象中;如果只想导出一个函数,则必须用自己的函数替换导出对象
module.exports = ()=>{ return 'exports is now a function'};
module.exports.func = ()=>{ return 'exports is an object with the function "func"'};
您正在导出以下内容:
{
daysBetween:function...
}
尝试:
删除daysBetween属性
导出是一个对象。当您添加.someField
时,您正在将属性添加到此对象中;如果只想导出一个函数,则必须用自己的函数替换导出对象
module.exports = ()=>{ return 'exports is now a function'};
module.exports.func = ()=>{ return 'exports is an object with the function "func"'};
console.log(需要('../global/daysBetween')
查看并发布导出的内容。@DiegoZoracKy我用{daysBetween:[Function]}
console.log(require('../global/daysBetween'))更新了问题代码>查看并发布导出的内容。@DiegoZoracKy我用{daysBetween:[Function]}
更新了问题,谢谢Chelode-你是对的。现在一切都正常了,我终于可以编写一些漂亮的“全局”函数了。附带问题:您什么时候会将函数附加到全局作用域global.myFunction()
或者完全避免这样做?我从来没有这样做过,我没有必要这样做,但我通常避免使用全局/静态函数。@torbenrudgaard忘记了global
方法,继续使用require()
需要的地方。您可以遵循的最佳路径是为它创建一个真正的模块,并在npm上发布它。谢谢,切洛德,你说得对。现在一切都正常了,我终于可以编写一些漂亮的“全局”函数了。附带问题:您什么时候会将函数附加到全局作用域global.myFunction()
或者完全避免这样做?我从来没有这样做过,我没有必要这样做,但我通常避免使用全局/静态函数。@torbenrudgaard忘记了global
方法,继续使用require()
需要的地方。您可以遵循的最佳路径是为它创建一个真正的模块,并在npm上发布它。检查: