簡體   English   中英

在node.js中更改名稱后無法訪問功能

[英]Can't access function after name changed in node.js

項目中的一個文件中有一個函數,我更改了它的名稱並且無法使用新名稱訪問它! 仍然可以調用舊名稱

我嘗試刪除 node_modules 並使用npm i重新安裝它

我正在使用的兩個文件都有代碼:

肥皂調用.js

前:

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

module.exports = call

后:

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

module.exports = checkUser

我如何導入和使用:

應用程序.js

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

奇怪的是我仍然無法訪問新的函數名稱

在此之前我使用了名稱call ,並且仍然可以在我的 app.js 文件中使用call函數

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

object 方法還允許您從一個文件中導出多個函數 - 您可以通過解構將這些函數放入它們自己的變量中:

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

您正在導出一個函數而不是一個對象,因此您需要直接調用soap()

關於能夠運行call ,它是函數原型的一部分。 所以你對Function.prototype.call()感到困惑

根據@Wiktor Zychla 的評論,像這樣使用它

肥皂調用.js

exports.checkUser(username, password){

}

應用程序.js

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM