1. ホーム
  2. node.js

[解決済み] node REPLで__dirnameが定義されていないのはなぜですか?

2022-04-24 20:22:52

質問

nodeのマニュアルによると、ファイルのディレクトリを取得するために __dirname しかし、REPLからは、これは未定義であるように見えます。これは私の誤解なのでしょうか、それともどこに誤りがあるのでしょうか?

$ node
> console.log(__dirname)
ReferenceError: __dirname is not defined
    at repl:1:14
    at REPLServer.eval (repl.js:80:21)
    at Interface.<anonymous> (repl.js:182:12)
    at Interface.emit (events.js:67:17)
    at Interface._onLine (readline.js:162:10)
    at Interface._line (readline.js:426:8)
    at Interface._ttyWrite (readline.js:603:14)
    at ReadStream.<anonymous> (readline.js:82:12)
    at ReadStream.emit (events.js:88:20)
    at ReadStream._emitKey (tty.js:320:10)

解決方法は?

__dirname はスクリプトでのみ定義されます。REPLでは利用できません。

スクリプトを作成してみる a.js

console.log(__dirname);

をクリックして実行します。

node a.js

をご覧ください。 __dirname を印刷しました。

背景の説明を追加しました。 __dirname は「このスクリプトのディレクトリ」という意味です。 REPLでは、スクリプトはありません。 したがって __dirname は本当の意味を持たない。