如何从Node中的RequireJS模块导出函数?使用我的代码,我得到一个空对象而不是我期待的Backbone模型。
first.js
包含:
'use strict';
var define=require('amd-define');
define(function (require) {
var Backbone = require('backbone');
// Our basic **Todo** model has `title`, `order`, and `completed` attributes.
var Todo = Backbone.Model.extend({
// Customizations of my model...
});
return Todo;
})
我的测试文件test.js
包含:
'use strict';
var chai =require("chai");
var assert=chai.assert;
var expect=chai.expect;
var Todo=require("first");
describe('Tests for Todo model', function () {
it('should create global variables for Todo', function () {
expect(Todo).to.be.exist;
console.log(typeof (Todo))
});
it('should be created with default values for its attributes', function() {
var todo = new Todo();
expect(todo.get('title')).to.equal('');
});
it('should fire a custom event when state change', function() {
var todo = new Todo();
todo.set({completed: true, order: 1});
todo.set('title', 'my title');
});
});
它给出Todo
不是函数的错误。 console.log
语句打印object
。
答案 0 :(得分:0)
包amd-define
要么是错误的,要么不支持CommonJS sugar。 (后者可能就是这种情况。我没有看到任何代码来处理支持CommonJS糖所必需的依赖转换。)
我建议转储amd-define
并使用amd-loader
代替。我已经使用它多年了,它有效。
代码:
从var define=require('amd-define');
移除first.js
。
在加载任何AMD模块之前,在测试文件中添加require('amd-loader')
(安装后)
我能够从first.js
进行导出。