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