2013-12-07 18 views
15
module.js:340 
    throw err; 
     ^
Error: Cannot find module './models/todo' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (C:\Users\Basel\Desktop\Todo List\routes\api.js:1:74) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 

C:\Users\Basel\Desktop\Todo List> 

このアプリケーションが起動しないのはなぜですか?私は既にグローバルnpmのインストールを試みました。 ./models/todoNodejsのモジュールが見つかりません

+0

'models'フォルダはどこですか? – matth

+1

詳細を入力する必要があります。 'models'ディレクトリに、' require'を呼び出すファイルと同じレベルの 'todo.js'ファイルがありますか? – JohnnyHK

+0

はい。もともと私はtodoに電話しました。私はそれをリファクタリングして、タイトルをtodos.jsに変更しました。その後、変更を反映するようにルート内のパスを変更しました(./models/todos 'へ)。しかし、それはうまくいきませんでした。 – user2993058

答えて

29

は、期間は、ノードが\Todo List\routes\models\todo.jsを探しますapi.jsがである同じフォルダになりますことを示しています。これは、アプリケーションのルートから開始されません。多分あなたは、システムの値を設定しませんでした

var todo = require('../app/models/todo'); 
+0

私のケースではノードは../を解析します。これはvar todo = require( '../ app/models/todo')にあります。出力は../app/models/todoでなくparent/app/models/todoとなります! –

14

:これを必要とするためには、レベルをジャンプアップし、同様のアプリのパスを指定するには、私たちに二つの期間が必要になりますNODE_PATHを。グローバルモジュールの場所を指す必要があります。

Linuxの場合:export NODE_PATH=/usr/local/lib/node_modules/はうまく動作します。

-1

私の場合、私がrequire文で指定したファイル名は間違っていました。 posts.jsという名前のモデルファイルがあり、require( './ models/post')を使用していました。それは私がそれを変更した後に働いた( 'モデル/投稿')

関連する問題