app在loopback自定义js文件中未定义

时间:2016-09-21 11:59:09

标签: node.js mean-stack loopbackjs strongloop loopback

我正在使用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();
  });

谢谢,

1 个答案:

答案 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();