2016-10-14 33 views
0

私は問題がある、私は別のJavaScriptファイルで何度も何度も使用できるオブジェクトを作成しようとしています。私はfoo.jsというファイルとboo.jsというファイルを持っています。私はboo.jsでオブジェクトを作成したいと思います。私のserver.jsファイルでは、私はfoo.jsが必要です。うまくいき、foo.jsにアクセスできます。 foo.jsからboo.jsにアクセスできるようにしたい私はfoo.jsでboo.jsが必要なときにエラーが発生し続け、アクセスできなくなります。これを行う方法はありますか?javascriptでnode.jsを使用して別のファイルの関数を呼び出す

は、ここでは、それらが同じディレクトリにある場合は、そのvar x = require('./boo')のように必要になるでしょう私のコード

//boo.js 
var obj = function() { 
    return { 
    data: 'data' 
    } 
} 

module.exports = { 
    obj: obj 
} 

foo.jsは

//foo.js 

var request = require('request'); 
var x = require('./modules/boo') 
var random= function() { 
    return x.obj(); 
} 

module.exports = { 
    random: random 
} 
+0

「* foo.js *でboo.jsが必要なときにエラーが発生しますか?」ファイルは互いにどこに位置していますか?それらは同じか異なるディレクトリにありますか? –

+0

私はcan not find module booというエラーが出ますが、それらは両方とも同じディレクトリにあります。 – inhaler

+0

私はbooのファイルパスを./modules/booから./booに変更しました。 – inhaler

答えて

0

です。 ./は現在のディレクトリからの相対パスです。

+0

私はそれをし、それは働いた!ありがとう!! – inhaler

0

彼らは両方とも、その場合には、同じディレクトリ

であり、あなたはパスからmodules/を削除することをお勧めします:

var x = require('./boo'); 

require()が認識しています現在のスクリプトの場所とスクリプトの親ディレクトリからの相対パスに基づいています。

パスの先頭の./は、__dirnameと同じディレクトリを指します。このディレクトリは、modules/と思われます。

経路における modules/含める
console.log(__dirname); 
// "/project-path/modules" 

はそれを倍加をもたらすであろう。

var path = require('path'); 

console.log(path.resolve(__dirname, './modules/boo')); 
// "/project-path/modules/modules/boo" 

を(サイドノート:fsモジュールは同じように動作しないことの相対パスがより基づいています。現在の作業ディレクトリまたはprocess.cwd()

関連する問題