在node.js中更改名称后无法访问功能

时间:2019-08-30 08:05:32

标签: javascript node.js function object ecmascript-6

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

我尝试删除node_modules并使用npm i

重新安装

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

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);

很奇怪,我仍然无法访问新的函数名

在此之前,我使用名称call,并且STILL可以在我的app.js文件中使用call函数

3 个答案:

答案 0 :(得分:1)

call已作为函数原型Function.prototype.call上的一种方法提供。这意味着soap是一个函数,这就是call有效但checkUser无效的原因。

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

const checkUser = require("../../models/soapCall");

或导出对象并按如下方式使用它:

module.exports = { checkUser };
// Main file
const soap = require("../../models/soapCall");
soap.checkUser(...);

对象方法还允许您从一个文件中导出多个函数-您可以通过解构将它们转换为它们自己的变量:

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

答案 1 :(得分:0)

您要导出的功能不是对象,因此您需要直接调用soap()

关于能够运行call,这是函数原型的一部分。所以您对Function.prototype.call()

感到困惑

答案 2 :(得分:0)

按照@Wiktor Zychla的评论,像这样使用它

soapCall.js

exports.checkUser(username, password){

}

app.js

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