2017-07-26 40 views
0

は、私はいくつかのルーティングを行うにはExpressを使用しています、と私はsignup.jsからの静的javascriptのファイル内の関数を呼び出すようにしたいが、私は次のようにExpress:モジュールが見つかりません?

Error: Cannot find module './js/list.js' 

私のディレクトリ構造があるというエラーが出ます:

app.js 
-routes/signup.js 
-public/js/list.js 
app.jsファイルで

、私はこのラインがあります:私のsignup.js

app.use(express.static(path.join(__dirname, 'public'))); 

を、私が持っている:

var listModel = require('./js/list.js'); 

list.jsファイルが含まれています

module.exports.list = function (userName, category) { 
    return ({ 
    "owner" : userNameName, 
    "category" : category, 
    "completed" : [], 
    "planned" : [], 
    "current" : [], 
    "dropped" : [], 
    "onHold" : [] 
    }); 
} 

は、私は私のサインアップファイルにリスト機能をインポートするために、行方不明です何か他のものはありますか?ありがとう!

+1

'routes/signup.js'から' require( '../ public/js/list.js);'が必要です。 –

+0

ああ、ありがとうございました! –

答えて

0

これらは異なるsignupであり、リストには異なる親ディレクトリがあるため、NodeJS require関数はそれらの兄弟を考慮しません。したがって、あなたはあなたが実際にその中から依存関係を必要とする

var listModel = require('./js/list.js'); 

を使用することができpublic/test.jsファイルを持っていた場合routes/signup.js

の内側

var listModel = require('../public/js/list.js'); 

を記述する必要があります。

+0

これはうまくいった、ありがとう! –

0

必要モジュールパスは次のようになります。

あなたのケースでは
var listModel = require('../public/js/list'); // it is fine to have the file extension 
0

signup.jslist.jsより別のフォルダにあるので、あなたはそれへのフルパスを指定する必要があります。

var listModel = require('../public/js/list.js');

app.use(express.static(path.join(__dirname, 'public')));あなたがlocalhost(または任意の経路アプリが上でホストされている)に行くとき、あなたがそのフォルダへのアクセス権を持っていることを意味します。つまり、localhost:3000/js/list.jsに行くと、そのフォルダにアクセスできます。

関連する問題