Javascript Can';在node.js中更改名称后无法访问函数
我在项目中的一个文件中有一个函数,我更改了它的名称,无法使用新名称访问它!仍然可以调用旧名称 我尝试删除node_模块,并使用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
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
间接调用函数。