나는 문제 같은 수출 모듈 간의 차이를 이해하는 데 :NodeJS, module.exports.X 대 module.exports = {X}
module.exports.getUserIP = function getUserIP(req) {
var ip = req.headers['x-forwarded-for'];
return ip;
}
또는를 그냥 선언 :
function getUserIP(req) {
// retrieve user IP from req object
// Build this function to be more accurate/use more sources.
var ip = req.headers['x-forwarded-for'];
return ip;
}
을
과 하단에 수출 :
module.exports = { getUserIP }
또는 :
module.exports = {getUserIP:getUserIP}
또는
module.exports = {'getUserIP':getUserIP}
내 문제는 : 내가 다른 파일에서 함수 getUserIP를 호출 할 때, 그러나 Error Message
:
var mainbody = require('./app.js');//getUserIP is in here.
const gl = require('geoip-lite');
var ax = require('axios');
module.exports.getloc = function getloc(req, ip, property) {
//return location from IP.
if (req) {
var ipGuest = mainbody.getUserIP(req); //HERE
} else {
var ipGuest = ip;
}....
내가 오류 메시지가 FIRST 메서드를 사용하여 함수를 내 보냅니다.
module.exports.getUserIP = function getUserIP(req) {
var ip = req.headers['x-forwarded-for'];
return ip;
}
그럼 완벽하게 작동합니다.
다른 점은 무엇입니까?
app.js에서 여러 유사한 함수를 내보내시겠습니까? 그렇다면 두 번째 방법을 사용하면 매번 내보내기 개체 전체를 덮어 씁니다. – paolord
그렇지 않습니다. 각 파일의 맨 아래에 하나의 module.exports = {} 만 있습니다. 다른 기능은 작동하지만이 기능은 다른 이유로 내 보내지 않습니다. 특별히 module.exports.name = function()을 사용하여 내보내기 만하면됩니다. 작동하지만 코드 하단에 8 개의 클래스를 내보내고 코드에 1 개의 클래스를 내보내는 것이 더러워 보입니다. –