[英]How do i export all modules, functions, etc in node.js from one index file?
[英]How to export functions from modules in node.js
我正在使用express(4.13.1)的 node.js(v4.2.2 ) 。 我正在嘗試將自定義模塊功能導入另一個模塊。 應用程序是使用express創建的,而對我的route var tests = require('./routes/tests');
唯一需要添加到app.js中的東西var tests = require('./routes/tests');
和該路線的app.use('/tests', tests);
我的兩個自定義文件(模塊)是(路徑相對於項目根目錄):
這是./model/test.js
:
var id;
var testNumber1;
var testNumber2;
function Test(id, testNumber1, testNumber2) {
this.id = id;
this.testNumber1 = testNumber1;
this.testNumber2 = testNumber2;
};
exports.reset = function() {
this.testNumber1 = 0;
this.testNumber2 = 0;
};
module.exports = Test;
這是./routes/tests.js
:
var express = require('express');
var Red = require('../model/test.js');
var router = express.Router();
/*create new test :id*/
router.post('/:id', function(req, res, next) {
var myNewTest = new Red(req.params.id, 0, 0)
myNewTest.testNumber2 += 1;
myNewTest.reset();
res.send('id: ' + myNewTest.id +
' testNumber2: ' + myNewTest.testNumber2);
});
module.exports = router;
當我嘗試執行curl -X POST http://localhost:3000/tests/1
出現錯誤TypeError: myNewTest.reset is not a function
。 我在理解如何正確導出功能時遇到了麻煩。 如果我正確理解此api參考 , module.exports = Test;
公開模塊的構造函數,必須使用module.exports = Test;
,但這並沒有公開reset
功能。 因此,要公開它,我已將其聲明為exports.reset = function() {...}
,但顯然,這是行不通的,至少在我看來是這樣。
通過其他一些回答,我還看到函數通常被聲明為function reset() {...}
,並且像exports.reset = reset;
一樣暴露exports.reset = reset;
,這給了我同樣的錯誤。
如何正確顯示重置功能?
您應該將其添加到原型中,此刻它只是模塊中的靜態方法,而不是附加到Test構造函數。
function Test(id, testNumber1, testNumber2) {
this.id = id;
this.testNumber1 = testNumber1;
this.testNumber2 = testNumber2;
};
Test.prototype.reset = function() {
this.testNumber1 = 0;
this.testNumber2 = 0;
};
module.exports = Test;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.