Javascript Can';在node.js中更改名称后无法访问函数

Javascript Can';在node.js中更改名称后无法访问函数,javascript,node.js,function,object,ecmascript-6,Javascript,Node.js,Function,Object,Ecmascript 6,我在项目中的一个文件中有一个函数,我更改了它的名称,无法使用新名称访问它!仍然可以调用旧名称 我尝试删除node_模块,并使用npmi 我使用的两个文件都有代码: soapCall.js 之前: function call(username, password){ ... } module.exports = call 之后: function checkUser(username, password){ ... } module.exports = checkUser

我在项目中的一个文件中有一个函数,我更改了它的名称,无法使用新名称访问它!仍然可以调用旧名称

我尝试删除node_模块,并使用
npmi

我使用的两个文件都有代码:

soapCall.js

之前:

function call(username, password){
    ...
}

module.exports = call
之后:

function checkUser(username, password){
    ...
}

module.exports = checkUser
我如何导入和使用:

app.js

const soap = require('../../models/soapCall');
...
soap.checkUser(username, password);
很奇怪,我仍然无法访问新函数名


在此之前,我使用了name
call
,并且仍然可以在我的app.js文件中使用
call
函数

call
已作为函数原型上的一种方法提供-。这意味着
soap
是一个函数,这就是为什么
call
有效,而
checkUser
无效的原因

soap
是一个函数,因为您要从文件中导出函数,只需在主文件中重命名它即可。如果要更改名称,请更改导入名称:

const checkUser = require("../../models/soapCall");
或者导出一个对象并将其用作:

module.exports = { checkUser };
// Main file
const soap = require("../../models/soapCall");
soap.checkUser(...);
object方法还允许您从一个文件中导出多个函数-您可以通过分解结构将这些函数转换为它们自己的变量:

module.exports = { checkUser, otherFunc };
// Main file
const { checkUser, otherFunc } = require("../../models/soapCall");
checkUser(...); // Calls checkUser function
otherFunc(...); // Calls otherFunc function

导出的是函数而不是对象,因此需要直接调用
soap()


关于能够运行
调用
,这是函数原型的一部分。所以你对它感到困惑,

根据@Wiktor Zychla的评论,像这样使用它

soapCall.js

exports.checkUser(username, password){

}
const soap = require('../../models/soapCall');
soap.checkUser(username, password);
app.js

exports.checkUser(username, password){

}
const soap = require('../../models/soapCall');
soap.checkUser(username, password);

你能分享更改名称之前的代码吗?@JothiBasu将代码更新为before和after,当然在app.js文件中我使用了
soap.call
你重启了服务器吗?我不知道你怎么能调用
soap.call
基于你的例子,你导出了一个函数,不是对象因为您已经导出了一个函数,用
soap调用它。checkUser
显然是错误的,您只能用
soap(…,…)
调用它。问题可能来自这样一个事实:任何函数都可以调用
.call
(就像
apply
),因此您可能错误地使用
.call
间接调用函数。