簡體   English   中英

如何從Node.js中的模塊導出函數

[英]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
  • ./routes/tests.js

這是./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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM