2017-03-21 7 views
0

私は以下のようにapp.jsファイルを持っています。 私はそれを書く方法を知らないnodejs環境に新しいですので、私は、ノードjsで工場設計パターンを実装する方法

var fs = require('fs'); 
var dotenv = require('dotenv'); 
dotenv.load(); 
var designtokenfile = require ('./designtokenfile'); 
var designtokendb = require ('./designtokendb'); 

DesignFactory.storeDesign = function(type) { 
if (type == 'file') { 
    return designtokenfile; 
} 
else if (type == 'db') 
{ 
return designtokendb; 
} 
}; 
module.exports.DesignFactory = DesignFactory; 

をDesignFactoryが定義されていないエラーを取得しています。助けてください

答えて

0

定義プロパティstoreDesignの前にオブジェクトとしてDesignFactoryを宣言する必要があります。

file1.js

var fs = require('fs'); 
var dotenv = require('dotenv'); 
dotenv.load(); 
var designtokenfile = require ('./designtokenfile'); 
var designtokendb = require ('./designtokendb'); 

// declare the DesignFactory variable as a plain object. 
var DesignFactory = {}; 

DesignFactory.storeDesign = function(type) { 
    if (type == 'file') { 
    return designtokenfile; 
    } else if (type == 'db') { 
    return designtokendb; 
    } 
}; 
module.exports.DesignFactory = DesignFactory; 

用法file2.jsで

var DesignFactory = require('./file1'); 
DesignFactory.storeDesign(/*arguments*/); 

:デビッド・バーカーの答えのように あなたがDesignFactoryを意味する場合は、JAVAでのクラスのようなものです、あなた関数として定義する必要があります。

function DesignFactory() {}; 
+0

ありがとうございました。他のnodejsファイルでstoreDesignを呼び出す必要がある場合は、どのように呼び出すことができます。 storeDesignメソッドを呼び出すコードで助けてください。 – Sushma

0

DesignFactoryはいつでも宣言していません。まずコンストラクタを宣言します。

// Constructor ES5 
var DesignFactory = function() { ... } 

// Prototype methods (must instantiate class to use these) 
DesignFactory.prototype = { 
    storeDesign: function(type) { 
     // Code here 
    } 
} 

// Or you can use the static approach as in your code 
DesignFactory.storeDesign = function(type) { ... } 

また、標準オブジェクトを使用することもできます。

var DesignFactory = {}; 

DesignFactory.storeDesign = function(type) { 
    // Code here 
}; 
関連する問題