[英]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.