我正在使用nodejs loopback framework.i想要运行一个cron job.i为server / boot文件夹中的这个cron作业创建了一个自定义js文件。但是当我手动运行这个文件(xyz)时。 app未定义。我的代码在
之下 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();
});
谢谢,
答案 0 :(得分:2)
由于您不包含以下代码:
,因此确实无法确定。var app = require('../server');
(如果require返回undefined,这将是最重要的代码)但是如果app
未定义,那么意味着模块已加载但其module.exports
未定义。
你从该模块中导出任何东西吗?
您确定app
确实是app.models
未定义,而不是server.js
吗?
在不知道相关代码的情况下,这些是最合理的调查内容。
如果您没有从var app = require('../server.js');
导出任何内容(这是我在上面的回答中的疑问,但现在您已经用代码和评论确认了它),那么在此行之后:
app.models.UserNotification
您将无法使用app.models
如果您要在需要server.js
的代码中使用module.exports.models = SOMETHING;
,那么您必须添加:
server.js
在您的models
代码中。您似乎在server.js
中没有任何名为module.exports.models
的内容,您不能将所有内容导出为app.models
,因此您无法预料 var app = require('../server.js');
在您的代码中定义:
$selected = array();