1. ホーム
  2. node.js

[解決済み] ノード "req is not defined"

2022-02-08 05:59:19

質問

以下のスクリプトを起動しようとすると

var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(8000);

var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;

console.log(ip)

以下のようなエラーが発生します。

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
ReferenceError: req is not defined
    at Object.<anonymous> (/home/ubuntu/IPDeliverer/server.js:9:10)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:32)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:41)

最初に推測したのは、何かモジュールが足りないのではないかということでしたので、以下のようにモジュールをインストールしました。

npm install req

そして、次の行を追加しました。

var req = require("./node_modules/req/node_modules/request");

が、まだうまくいきません。何かいい方法はないでしょうか?

解決方法は?

リクエストの名前を request ではなく req また、すべてのコールバックはそれ自身の request そのため、コールバックの外側でIPをチェックすることは意味を持ちません。使用方法 request をコールバック内で使用します。

var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();

  var ip = request.headers['x-forwarded-for'] || request.connection.remoteAddress;

  console.log(ip)
}).listen(8000);