2016-11-28 2 views
-2

私は単純に文字列に適切CommonJSの道

function reverseString(str) { 
    var reversed = " "; 
    for (var i = str.length - 1; i >= 0; i--) { 
     reversed += str[i]; 
    } 
    return reversed; 
} 
module.exports.reverseString = reverseString; 

を反転させutil.jsと呼ばれるファイル内の関数をインポートする方法について混乱しています、私は別のファイルでそれにアクセスしたいを使用してインポートする方法これはという名前のサーバーです.js

これまでの説明はこれまでのものです。

var util = require('./util'); 

util.reverseString(); 




var reversed = reverseString(req.body); 
res.send(reversed); 
} else { 
res.status(400).end() 
} 
}); 

私はノードモジュールをチェックするために郵便配達を使用していますが、私はそれを実行したとき、私は以前それをテストしたので、私は、逆コード作品を知っているので、私は私のインポートがあると仮定し

TypeError: Cannot read property 'length' of undefined 

を取得間違っている。しかし、これを理解する助けがあれば、素晴らしいものになるでしょう。

答えて

2

reverseString関数は、文字列型の引数(arrayでも構いません)と、この同じ関数を引数に対して繰り返しています。

しかし、この関数を呼び出すときにパラメータを渡していないので、str引数は未定義に設定されています。

undefinedそれは

1

このエラーをスローをされるように、任意の長さのプロパティを持っていない(私の答えは、ES5をターゲットにしては。いくつかのより多くの速記は、デフォルトの輸出と名付け輸出のように、ES6にあります)。その後

module.exports = reverseString; 

あなたは1つのエクスポートに使用することができます

var reverseString = require('./util'); 

reverseString("bobba"); 

//shorthand: 
require('./util')("bobba"); 

をまたは名前付き輸出のオブジェクトを返す:次に

module.exports = { reverseString: reverseString }; 

var utils = require('./util'); 
utils.reverseString("bobba"); 

// shorthand: 
require('./util').reverseString("bobba"); 
1

変数にインポートしてから関数があるライブラリを参照する必要があります。

var util = require('./util'); 

// util.reverseString(); // this does nothing 

var req = { body: 'some string' }; 
var reversed = util.reverseString(req.body); // ref util here