Node.js RequireJS替换节点';我们需要方法

Node.js RequireJS替换节点';我们需要方法,node.js,requirejs,mocha.js,Node.js,Requirejs,Mocha.js,我遇到了一个问题,节点的require方法已被requirejs的require方法取代。我们正在运行一个主干应用程序,我已经设置了一些摩卡测试。我们的目标是能够在浏览器中运行测试,也可以使用grunt mocha测试,并在每个版本的终端上使用grunt contrib watch运行测试 我还不完全理解所有这些部分是如何组合在一起的,所以请原谅任何缺乏解释和理解的地方 这是我们的一个测试文件models.js的设置: describe("Models", function() { var

我遇到了一个问题,节点的require方法已被requirejs的require方法取代。我们正在运行一个主干应用程序,我已经设置了一些摩卡测试。我们的目标是能够在浏览器中运行测试,也可以使用grunt mocha测试,并在每个版本的终端上使用grunt contrib watch运行测试

我还不完全理解所有这些部分是如何组合在一起的,所以请原谅任何缺乏解释和理解的地方

这是我们的一个测试文件models.js的设置:

describe("Models", function() {

  var should;
  var firstModule = 'models/firstModel';
  var secondModule = 'models/secondModel';
  var chaiModule = 'chai';

  modules = [
    firstModule,
    secondModule,
    chaiModule
  ];

  before(function(done) {
    require(modules, function(firstModel, secondModel, chai){
      FirstModel = eventModel;
      SecondModel = eventDetailsModel;
      should = chai.should();
      done();
    });
  });

  beforeEach(function(done) {
    NewFirstModel = new FirstModel();
    NewSecondModel = new SecondModel();
    done();
  });

  describe("first model", function() {

    it("should exist", function (done) {
      NewFirstModel.should.exist();
      done();
    });
  });
});
require(modules, function(firstModel, secondModel, chai){
通过以下设置使用grunt contrib requirejs:

compile:
  options:
    baseUrl: "<%= tmpDir %>/scripts"
    mainConfigFile: "<%= tmpDir %>/scripts/init.js"
    name: "../../bower_components/almond/almond"
    out: "<%= distDir %>/scripts/app.js"
    preserveLicenseComments: false
    cjsTranslate: true
    wrapShim: true
    uglify:
      ascii_only: true
我有一个test.html文件,其中包括每个单独的测试文件,并正确地测试我向它们抛出的所有内容

但是,当我运行指向相同测试文件的mochaTest grunt任务时,我得到以下错误:

AssertionError: path must be a string
参考models.js中的这一行:

describe("Models", function() {

  var should;
  var firstModule = 'models/firstModel';
  var secondModule = 'models/secondModel';
  var chaiModule = 'chai';

  modules = [
    firstModule,
    secondModule,
    chaiModule
  ];

  before(function(done) {
    require(modules, function(firstModel, secondModel, chai){
      FirstModel = eventModel;
      SecondModel = eventDetailsModel;
      should = chai.should();
      done();
    });
  });

  beforeEach(function(done) {
    NewFirstModel = new FirstModel();
    NewSecondModel = new SecondModel();
    done();
  });

  describe("first model", function() {

    it("should exist", function (done) {
      NewFirstModel.should.exist();
      done();
    });
  });
});
require(modules, function(firstModel, secondModel, chai){

如果我控制台记录require方法,它将作为RequireJS的require方法返回。我尝试了一些不同的方法,包括在requirejs配置中引用的init.js文件中设置
nodeRequire:require
。有什么线索吗?谢谢

所有内容都表明您正在Node.js中运行此功能,而不是在浏览器中运行。那么,究竟为什么要优化模块(即使用
grunt contrib requirejs
)??您似乎正在将Almond捆绑到优化包中,我认为它不适用于Node.js。是的,它在Node中运行,用于提供文件、进行api调用等。但是,这是一个在浏览器中运行的单页主干应用程序。您似乎在混合前端和后端模块。仅对前端模块(在浏览器中运行)使用requirejs。