2016-11-10 4 views
0

私は、別のものの中で.jsモジュールを使用したいExpressJSプロジェクトを持っています。 .jsモジュールを取得するためにrequireを使用しますが、パスが正しくないためモジュールを見つけることができません。どのようにして、ローカルモジュールの正しいパスが何であるかを知ることができます。ここで要求を使用するときに.jsファイルの正しいパスを見つける方法

は私のプロジェクト階層/構造は enter image description here

ですこれは、私がprogramController.jsの内側にしようとしたものです - 他の事は、私は非常に使用して理解していないです「」パス文字列で。

+0

にアクセスすることができます。しかし、あなたがそれのようなパスを使用し始めるとき、それは良くありません。私がする傾向があるのは、自分のアプリケーションnode_modulesを使用することです。 – Keith

答えて

2

パス内の. and .. notationは、それらが必要とされているファイルに対応するの相対のパスを表します。このファイル内にある同じディレクトリ内(また、現在の作業ディレクトリと呼ぶ)

.. - - カレントディレクトリの親ディレクトリ内

意味...ワイルドカード

.

これらの倍数を一緒に使用すると、相対パスパターンが作成されます。だから、program.jsあなたのパスにアクセスするprogramController.jsため

var Program = require('../../models/program');

する必要があります。このパスは意味、ファイルprogram.jsをロードし、その後、Appディレクトリに2つのフォルダを上がるとmodelsフォルダを探します。

同じルールに続いて、あなたはまた、 `../../モデル/ program`だろう、あなたの例ではfinishProgram.js

var FinishProgram = require('../../models/finishProgram');

+0

あなたの答えに感謝@peteb、それは動作します!しかし、私はこのパス文字列がどのように動作するのか把握できません。 app_server - > routes - > route.js app_server - > controllers - > .jsのすべてのコントローラが必要です。 –

+0

1つの 'require'の中にそれらの全てを必要としているのですか、含ませたいコントローラファイルごとに' require'を行っていますか? – peteb

+0

route.jsファイル内でコントローラごとに1つのコントローラが必要 –

1

.は、現在のディレクトリを表し、あなたのケースでは冗長です。

パスは、必要なファイルにナビゲートする方法を決定するために使用される単純な相対パスです。

これはあなたのために働く必要があります:拡張.jsが必要とされていないことを

var Program = require('../../models/program'); 
var FinishProgram = require('../../models/finishProgram'); 

注意を。

関連する問題