Express模块​​ - 将对象导出到主应用程序

时间:2016-09-18 19:56:43

标签: javascript node.js express module

我正在努力将Express中的对象从模块传递到我的应用程序。应用程序很简单。我从表单中获取输入,测试字符串然后返回null或对象。但是,我尝试了不同的方法,我的对象仍然未定义。寻找将对象从模块传递到我的应用程序的最有效方法。

以下是我app.js中的代码



var app = express();
var path = require('path');
var router = express.Router();
var checkString = require('./checkString.js');

//Test Server Connection
app.listen(3000, function() {
  console.log('Example app listening on port 3000!');
});

//Set Use
app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(bodyParser.json());
app.use(router);

//Set Routes
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, './views/pages'));


//GET Method
router.get('/', function(req, res) {

  //Renders EJS Template and variables

  res.render('index');
});


//Receive User Input from Form
//Post Request
router.post('/', function(req, res) {

  //Check Form Input Results
  var formInput = req.body.inputText;
  var ReqMethod = req.method;
  console.log(`Method: ${ReqMethod}`);
  console.log(`Body: ${formInput}`);

  //Assign form data to a variable after calling a function
  checkString.dateResponse(formInput);


  //res.json(checkString.timeStamp);
  res.end();
});




以下是我的模块的代码(' checkString.js')



//var exports = module.exports {};

var moment = require('moment');

//Create TimeStamp Object to Export to Server.js
exports.timeStamp = function(unix, natural) {
  this.unix = unix;
  this.natural = natural;
}

//Function Working in Chrome Console

exports.dateResponse = function(data) {


  //Check The Date
  if (isNaN(data)) {

    return null

  } else {

    return data;

  }


  //Update timeStamp object with time/date

  if (data !== null) {

    var unix = moment(x).unix();

    var natural = moment(x).format('MMM Do, YYYY');

    return timeStamp(unix, natural);

  } else {

    return null
  }

}




1 个答案:

答案 0 :(得分:0)

我发现您的代码存在一些问题,但最重要的是我认为您只是返回数据并且不执行任何操作。所以

console.log(checkString.dateResponse(formInput));
如果不是NaN,

应该返回formInput。没有更多,因为它不能再进一步的原因。此外,“isNaN”不是检查数字是否为NaN的最佳方式(在许多非数字情况下失败)。检查nan是否为nan的最佳方法是比较

a !== a 

因为只有NaN不等于自己。 (当然我正在假设原语,导致功能结果可能不相等)

如果你将检查移到顶部

,第三,你的代码可能会更整洁
if(isNan(data) || data === null) {
     return null
}

你会避免不必要的意图。您还可以将逻辑运算符移动到变量,并仅在if内部声明变量。 (但有时候只是矫枉过正)

 const isNaN = data !== data;
 const isNull = data === null || data === undefined;
 const isNall = isNaN || isNull
 if (isNall) {
   return null
 }