backbone.js - Exporting a function with RequireJS in Node returns an empty object -
how export function requirejs module in node? code have, empty object rather backbone model i'm expecting.
first.js
contains:
'use strict'; var define=require('amd-define'); define(function (require) { var backbone = require('backbone'); // our basic **todo** model has `title`, `order`, , `completed` attributes. var todo = backbone.model.extend({ // customizations of model... }); return todo; })
my test file test.js
contains:
'use strict'; var chai =require("chai"); var assert=chai.assert; var expect=chai.expect; var todo=require("first"); describe('tests todo model', function () { it('should create global variables todo', function () { expect(todo).to.be.exist; console.log(typeof (todo)) }); it('should created default values attributes', function() { var todo = new todo(); expect(todo.get('title')).to.equal(''); }); it('should fire custom event when state change', function() { var todo = new todo(); todo.set({completed: true, order: 1}); todo.set('title', 'my title'); }); });
it gives error todo
not function. console.log
statement prints object
.
the package amd-define
either buggy or not support commonjs sugar. (the latter case. not see code in takes care of doing dependency transformation necessary supporting commonjs sugar.)
i recommend dumping amd-define
, using amd-loader
instead. i've used years, works.
for code:
remove
var define=require('amd-define');
first.js
.add
require('amd-loader')
(after installing it) in test file before load amd module.
i able export first.js
doing this.
Comments
Post a Comment