应用程序在回送自定义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');