質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

647閲覧

node.js express パスの取得方法

uroncha

総合スコア54

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2017/11/02 23:32

node.js+ExpressでWEBアプリを作っています。

現在実行中のパスを「__dirname」で取得できるのは知っていますが、app.js(起動用スクリプト)の場所を取得する方法が知りたいです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

公式サイトで確認する癖をつけよう
process.mainModule

The process.mainModule property provides an alternative way of retrieving require.main. The difference is that if the main module changes at runtime, require.main may still refer to the original main module in modules that were required before the change occurred. Generally, it's safe to assume that the two refer to the same module.

As with require.main, process.mainModule will be undefined if there is no entry script.

なんとなくこれでお望みの情報が取れそうな事が確認出来るね。
より詳細にはJSファイルを作ってconsole.logで確認してみよう。

Bash

1$ cat test.js 2console.log(process.mainModule) 3 4$ node test.js 5Module { 6 id: '.', 7 filename: '<path>/test.js', 8 ...省略 9}

投稿2017/11/02 23:46

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uroncha

2017/11/03 01:59

ありがとうございます。 続けての質問で恐縮ですが、app.jsの場所を__dirnameのように使いたいのですが、なにか良い方法はありますでしょうか? プログラム内のファイルを絶対パスで指定する起点として 使いたいです。 path.join(__rootdir, '/views/sample.ejs'); のような感じにやりたいです。
miyabi-sun

2017/11/03 02:07

Node.jsはブラウザのJavaScriptとは違い、globalという変数にグローバル領域全てで使えるオブジェクトが詰まっています。 なので、app.jsが起点ならば`global.__rootdir = ''`と書いておけば全ての配下のスクリプトで使えるでしょう。 しかしながらexpressとのことだったので、 本来の目的はエンドポイントが詰まったディレクトリにアクセスしたかったのでは? 「npm scripts」を使って実行すれば、必ずコマンド実行したカレントディレクトリはpackage.jsonのあるルートディレクトリに固定されます。 多少面倒でも、npm scriptsを経由するルール等を使い、 process.cwd()でルートディレクトリから辿る作りにしておくことをオススメしますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問