【问题标题】:Sails.js - Node.js - [ReferenceError: Promise is not defined]Sails.js - Node.js - [ReferenceError: Promise is not defined]
【发布时间】:2015-09-21 15:28:33
【问题描述】:

我继承了一个用Angular/Sails/PostgreSQL开发的半完成项目(app)

我之前没有使用过 Angular、Sails.js 或 PostgreSQL

该应用在现场运行,目前正在运行,并且有几个重要用户正在使用它。

在我执行“mkdir 日志”之前,该应用程序根本没有在暂存时运行,然后出现“ReferenceError: Promise is not defined”,所以我认为该应用程序可能是实时开发的/实时配置的.

我已经建立了一个本地开发环境,也看到了这个“ReferenceError”错误。

我怀疑配置问题是导致此问题的原因,但如果是这种情况,我不知道我错过了什么。

我已经尝试过各种命令,例如'npm install'、'npm update',以及降级各种包,目前代码、package.json 等是 live 的精确副本,模块应该完全相同版本。

我可以新建一个sails项目,在浏览器中查看一切正常。

风帆升力的壳输出:

vagrant@sails-vagrant-machine:~/dev/project$ sails lift

info: Starting app...

  i18n:debug will write to /home/vagrant/dev/project/config/locales/en.json +0ms
  i18n:debug read /home/vagrant/dev/project/config/locales/en.json for locale: en +0ms
  i18n:debug will write to /home/vagrant/dev/project/config/locales/es.json +1ms
  i18n:debug read /home/vagrant/dev/project/config/locales/es.json for locale: es +1ms
  i18n:debug will write to /home/vagrant/dev/project/config/locales/fr.json +0ms
  i18n:debug read /home/vagrant/dev/project/config/locales/fr.json for locale: fr +1ms
  i18n:debug will write to /home/vagrant/dev/project/config/locales/de.json +0ms
  i18n:debug read /home/vagrant/dev/project/config/locales/de.json for locale: de +0ms
[ReferenceError: Promise is not defined]
undefined
Unhandled rejection TypeError: Cannot read property 'message' of undefined
    at /home/vagrant/dev/project/api/controllers/AuthController.js:23:34
    at Strategy.strategy.error (/home/vagrant/dev/project/node_modules/passport/lib/middleware/authenticate.js:333:18)
    at verified (/home/vagrant/dev/project/node_modules/passport-local/lib/strategy.js:81:28)
    at /home/vagrant/dev/project/config/passport.js:79:20
    at tryCatcher (/home/vagrant/dev/project/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/home/vagrant/dev/project/node_modules/bluebird/js/main/promise.js:507:31)
    at Promise._settlePromiseAt (/home/vagrant/dev/project/node_modules/bluebird/js/main/promise.js:581:18)
    at Promise._settlePromises (/home/vagrant/dev/project/node_modules/bluebird/js/main/promise.js:697:14)
    at Async._drainQueue (/home/vagrant/dev/project/node_modules/bluebird/js/main/async.js:123:16)
    at Async._drainQueues (/home/vagrant/dev/project/node_modules/bluebird/js/main/async.js:133:10)
    at Async.drainQueues (/home/vagrant/dev/project/node_modules/bluebird/js/main/async.js:15:14)
    at process._tickDomainCallback (node.js:463:13)

package.json:

{
  "name": "project",
  "private": true,
  "version": "0.0.0",
  "description": "a Sails application",
  "keywords": [],
  "dependencies": {
    "ap": "^0.2.0",
    "async": "^1.4.2",
    "bcrypt": "~0.8.0",
    "bluebird": "^2.10.0",
    "crypto": "0.0.3",
    "ejs": "~0.8.4",
    "email-templates": "^2.0.1",
    "forever": "^0.15.1",
    "grunt": "0.4.2",
    "grunt-contrib-clean": "~0.5.0",
    "grunt-contrib-coffee": "~0.10.1",
    "grunt-contrib-concat": "~0.3.0",
    "grunt-contrib-copy": "~0.5.0",
    "grunt-contrib-cssmin": "~0.9.0",
    "grunt-contrib-jst": "~0.6.0",
    "grunt-contrib-less": "0.11.1",
    "grunt-contrib-uglify": "~0.4.0",
    "grunt-contrib-watch": "~0.5.3",
    "grunt-sails-linker": "~0.9.5",
    "grunt-sync": "~0.0.4",
    "html-pdf": "^1.4.0",
    "include-all": "~0.1.3",
    "less": "^2.5.1",
    "mandrill-api": "^1.0.45",
    "moment": "^2.10.6",
    "passport": "~0.2.1",
    "passport-local": "~1.0.0",
    "postgres-array": "^1.0.0",
    "postgres-bytea": "^1.0.0",
    "postgres-date": "^1.0.0",
    "rc": "~0.5.0",
    "request": "^2.62.0",
    "sails": "~0.11.0",
    "sails-disk": "~0.10.0",
    "sails-postgresql": "^0.10.16",
    "sp": "^0.1.3",
    "waterline": "^0.10.26",
    "winston": "^1.0.1"
  },
  "scripts": {
    "start": "node app.js",
    "debug": "node debug app.js"
  },
  "main": "app.js",
  "repository": {
    "type": "git",
    "url": "git://github.com/**.....**/project.git"
  },
  "author": "**.....**",
  "license": ""
}

api/controllers/AuthController.js:

/**
 * AuthController
 *
 * @description :: Server-side logic for managing auths
 * @help        :: See http://links.sailsjs.org/docs/controllers
 */

var passport = require('passport');
var bcrypt = require('bcrypt');

module.exports = {
    _config: {
        actions: false,
        shortcuts: false,
        rest: false
    },
    login: function(req, res) {
        passport.authenticate('local', function(err, user, info) {
            console.log(err);
            console.log(user);
            if ((err) || (!user)) {
                return res.send({
                    message: info.message,
                    user: user
                });
            } else {
                req.logIn(user, function (err) {
                    if (err) res.send(err);
                    return res.send({
                        message: info.message,
                        user: user
                    });
                });
            }
        })(req, res);
    },
    logout: function(req, res) {
        req.logout();
        res.redirect('/');
    }
};

非常感谢您对此的帮助。

【问题讨论】:

    标签: javascript node.js sails.js waterline


    【解决方案1】:

    info 不是您的 passport.authenticate 行上的对象。

    passport.authenticate('local', function(err, user, info) {
    

    您登录了erruser,但您没有登录info - 如果您登录了info,您会看到undefined,因此您不能在此行上使用它的message 属性:

    return res.send({
      message: info.message,
      user: user
    });
    

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 2015-12-06
      • 1970-01-01
      • 2016-11-22
      • 2013-08-14
      相关资源
      最近更新 更多