应用程序在回送自定义js文件中是未定义的

我正在使用nodejs loopback framework.i想运行一个cron job.i在server / boot文件夹中为这个cron作业创build了一个自定义的js文件。但是当我手动运行这个文件(xyz)时。 应用程序是undefined.my代码如下

var app = require('../server.js'); console.log(">>>>>>>>>>>>>>in test") var subscription = app.models.UserNotification; console.log(">>>>>>>>>>>..in manage") var datasource=subscription.dataSource; var query="SELECT DISTINCT userId FROM users_subscription"; datasource.connector.query(sql,function (err, data) { console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>data is>>>>>",data); }) 

这里是我的server.js文件

  var bodyParser = require('body-parser'); var loopback = require('loopback'); var boot = require('loopback-boot'); var app = module.exports = loopback(); var passport = require('passport'); var bodyParser = require('body-parser').urlencoded({ extended: true }) app.use(bodyParser) app.use(loopback.context()); app.use(loopback.token()); var path = require("path"); var url = require('url'); var http = require('http'); var fs = require('fs'); var request = require('request'); app.start = function() { // start the web server return app.listen(function() { app.emit('started'); var baseUrl = app.get('url').replace(/\/$/, ''); console.log('Web server listening at: %s', baseUrl); if (app.get('loopback-component-explorer')) { var explorerPath = app.get('loopback-component-explorer').mountPath; console.log('Browse your REST API at %s%s', baseUrl, explorerPath); } }); }; app.use(loopback.static(path.resolve(__dirname, '../client'))); app.use(loopback.static(path.resolve(__dirname, '../admin'))); app.use(loopback.static(path.resolve(__dirname, '../other-dir'))); boot(app, __dirname, function(err) { if (err) throw err; if (require.main === module) app.start(); }); 

谢谢,

由于您不包含随附的代码,所以确实无法确定:

 var app = require('../server'); 

(如果require的返回值未定义,这将是包含的最重要的代码),但是如果app未定义,则意味着该模块已加载,但其module.exports未定义。

你从这个模块出口什么东西?

你确定这是真正的app是不确定的,而不是,比如说, app.models

不知道有问题的代码是最合理的事情要调查。

更新

如果你不从server.js导出任何东西(这是我在上面的答案中的怀疑,但是现在你用代码和注释来确认它),那么在这行之后:

 var app = require('../server.js'); 

你将无法使用app.models.UserNotification

如果你想在需要server.js的代码中使用app.models ,那么你必须添加:

 module.exports.models = SOMETHING; 

在你的server.js代码中。 在server.js ,你似乎没有任何称为models东西,你不会像module.exports.models那样导出任何东西,所以你不能指望在你的代码中定义app.models

  var app = require('../server.js');