対Iのようなエクスポートモジュール間の差異を理解する問題を抱えていNodeJSは、module.exports.Xはmodule.exportsは= {X}
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から複数の同様の機能をエクスポートしていますか?はいの場合は、2回目のメソッドを使用するたびにエクスポートオブジェクト全体を上書きします。 – paolord
私はそうではありません。私は各ファイルの一番下にmodule.exports = {}を1つだけ持っています。 他の関数は機能しますが、何らかの理由で他の関数と同じようにエクスポートされません。 これは動作しますが、下部に8つのクラスをエクスポートし、コードに1つのクラスをインラインでエクスポートするだけで邪魔になります。 –