Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试着写下我的第一句话;“全球”;用于my nodejs控制器的函数_Javascript_Node.js - Fatal编程技术网

Javascript 试着写下我的第一句话;“全球”;用于my nodejs控制器的函数

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

我在几乎所有的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] }
您正在导出以下内容:

{
    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上发布它。检查: