Typescript AMD-moduler för Node.js
Jag har följande Typescript-fil som jag kompilerar med AMD-moduler:
import tsmx = module("../TSMX/tsmx");
tsmx.createServer(1337);
vilket producerar följande js:
define(["require", "exports", "../TSMX/tsmx"], function(require, exports, __tsmx__) {
var tsmx = __tsmx__;
tsmx.createServer(1337);
})
När jag försöker ladda det i Node.js får jag följande fel:
(function (exports, require, module, __filename, __dirname) { define(["require ^ReferenceError: define är inte definierad vid Object. (C:\DB\Repo\TSMX\TSMX\TSMXTest\app.js:1:63) vid Module._compile (module.js:456:26) vid Object.Module._extensions..js (module.js:474:10) vid Module.load (module.js:356:32) vid Function.Module._load (module.js:312:12) vid Function.Module.runMain (module.js:497:10) vid startup (node.js:119:16) vid node.js:901:3
Hur får man detta att fungera och få "define" definierat? Jag behöver AMD-moduler eftersom jag kommer att ladda lite kod i webbläsaren.
Jag kommer från C# och AS3 där Imports/Namespaces är mycket enklare, så ursäkta om detta är en amatörfråga.
REDIGERA: Som rekommenderas av http://requirejs.org/docs/node.html#nodeModules lade jag till högst upp i filen:
if (typeof define !== 'function')
{
var define = require('amdefine')(module );
}
define(function (require)
{
var dep = require('dependency');
return function () { };
});
men detta placeras inuti define-anropet av TypeScript vilket gör det värdelöst. Sedan placerade jag det manuellt utanför define-anropet vilket bara resulterade i ett "Kan inte hitta modul 'amdefine'"-fel.
Svar #1
Bara ett alternativ: Du behöver inte använda AMD på node. Kompilera dina node-filer separat från dina webbläsarfiler. Använd AMD för webbläsaren.
Om du fortfarande vill använda AMD i node-kod kan detta hjälpa: http://nodejs.org/docs/v0.5.0/api/modules.html
Jag har inte använt Node än, men i webbläsaren är define/require definierade i ett tredjepartsbibliotek t.ex. requirejs: http://requirejs.org/ demo: http://www.youtube.com/watch?v=4AGQpv0MKsA