【问题标题】:Node JS Require throw AssertionError: missing path节点 JS 需要抛出 AssertionError:缺少路径
【发布时间】:2015-12-31 06:02:56
【问题描述】:

我有一个用 node.js 编写的简单应用程序:

var mongo   = require('./helpers/mongo_utils.js');
var express = require('express');
var user = require('./models/users.js');

mongo.connect(function (err)
{
  if (err) throw err;
  console.log('connected');

  var app = express();
  app.listen(3000, function ()
    {
      console.log('Server set up and start listening on port 3000');
    })
})

除非我需要 users.js 文件,否则一切正常。如果我不需要它,我没有问题,但是当我这样做时,我会收到此错误:

assert.js:89
  throw new assert.AssertionError({
  ^
AssertionError: missing path
    at Module.require (module.js:363:3)
    at require (module.js:384:17)
    at Object.<anonymous> (/home/jimzer--jimzer/www/NodeJsForum/models/users.js:1:79)
    at Module._compile (module.js:434:26)
    at Object.Module._extensions..js (module.js:452:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/home/jimzer--jimzer/www/NodeJsForum/app.js:3:12)

如果有帮助,这里是 users.js 的代码:

var mongo     = require('') = ('./../helpers/mongo_utils.js');
var mailValid = require('./../helpers/email_valid.js');

var db = mongo.getDb();

var User = function (pseudo, psw, mail, level, callback)
{
  // Params checking
  if (!(pseudo && psw && mail && (level != 'undefined')))
  {
    err = new Error("All fields aren't specified"); err.code = 0;
    return callback(err);
  }
  // Mail validation
  if (!mailValid(mail))
  {
    err = new Error("Mail adress isn't valid"); err.code = 1;
    return callback(err);
  }
  db.users.findOne({mail: mail}, function (err, doc)
  {
    if (err) throw err;
    if (doc)
    {
      err = new Error("Mail adress already used");
      err.code = 1;
      return callback(err);
    }
  });

  // Pseudo
  if (!(pseudo.length > 0 && pseudo.length < 20))
  {
    err = new Error("Pseudo length invalid");
    err.code = 2;
    return callback(err);
  }
  db.getDb.users.findOne({_id: pseudo}, function (err, doc)
  {
    if (err) throw err;
    if (doc)
    {
      err = new Error("pseudo déja utilisé"); err.code = 2;
      return callback(err);
    }
  });

  // Psw validation
  if (!(psw instanceof String))
  {
    err = new Error("Password invalid"); err.code = 3;
    return callback(err);
  }

  // Level validation
  if (!(lvl > 0 && lvl < 10))
  {
    err = new Error("Access level invalid"); err.code = 4;
    return callback(err);
  }

  // If all test are OK, we construct and instance of User and pass it to the callback
  else
  {
    this.pseudo = pseudo;
    this.psw = psw;
    this.mail = mail;
    this.date = Date.now();
    this.lvl = lvl;
    return callback(null, this);
  }
}

module.exports = User;

【问题讨论】:

  • 我几乎可以肯定你不想要这个:var mongo = require('') = ('./../helpers/mongo_utils.js');

标签: javascript node.js mongodb express require


【解决方案1】:

您忘记了 express 字符串周围的引号。尝试更改此行:

var express = require(express); 

对于以下一个:

var express = require('express');

看看它是否解决了问题。

【讨论】:

    【解决方案2】:

    错误是由于传递require 任何不真实的值引起的。

     var sinon = require(sinon);
    

    我真正的意思...

    var sinon = require('sinon');
    

    【讨论】:

      【解决方案3】:

      读取堆栈跟踪:

      at Object.<anonymous> (/home/jimzer--jimzer/www/NodeJsForum/models/users.js:1:79)
      

      这是错误的:

      var mongo     = require('') = ('./../helpers/mongo_utils.js');
      

      不确定您要达到的目标,但可能应该是这样:

      var mongo     =  ('./../helpers/mongo_utils.js');
      

      【讨论】:

      • 非常感谢,我想我在寻找正确的地方时感到困惑。那个愚蠢的错误! Tahnk 你,有一个美好的夜晚(或白天)
      猜你喜欢
      • 1970-01-01
      • 2011-04-18
      • 2021-10-23
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 2021-05-17
      相关资源
      最近更新 更多