Usando timezone-js en el progtwig nodejs

Aquí está el código que escribí para usar el módulo timezone-js para crear el objeto Date para una zona horaria específica

 require('timezone-js'); var dt = new timezoneJS.Date('2012, 06, 8, 11, 55, 4','Europe/Amsterdam'); 

npm install timezone-js e instalé el módulo.

Sin embargo, cuando ejecuto el progtwig, aparece el siguiente error

 var dt = new timezoneJS.Date('2012, 06, 8, 11, 55, 4','Europe/Amsterdam'); ^ ReferenceError: timezoneJS is not defined at Object. (/Users/nandish/Documents/MI-Airlines/mi.airline-sync/lib/nodeTest.js:47:15) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:244:9) 

Cuando usas require , asignas el resultado a una variable y luego usas esa variable. Asi que:

 var timezoneJS = require('timezone-js'); 

Entre otras cosas, esto significa que puedes usar el nombre que quieras, por ejemplo:

 var ts = require('timezone-js'); var dt = new ts.Date(2013, 0, 1); 

Nota al margen: asegúrese de leer acerca de los requisitos de configuración para la timezone-js si lo va a usar. Necesita archivos de zona, que intentará cargar dinámicamente si no los proporciona. La versión que probé tiene errores que detectan qué transporte está disponible, FWIW (intenta leer un símbolo global que no sabe que está definido, lo que produce una excepción, en lugar de usar typeof thesymbol que no lo hace).

Si proactivas, toma los archivos de la zona horaria como se describe en ese enlace, y están en la ruta relativa tz desde donde ejecutas tu script, esto funciona:

 var timezoneJS = require("timezone-js"); var fs = require('fs'); // Give timezoneJS a transport for loading local timezone files. // This code is extracted from https://github.com/mde/timezone-js/blob/master/spec/test-utils.js timezoneJS.timezone.transport = function (opts) { // No success handler, what's the point? if (opts.async) { if (typeof opts.success !== 'function') return; opts.error = opts.error || console.error; return fs.readFile(opts.url, 'utf8', function (err, data) { return err ? opts.error(err) : opts.success(data); }); } return fs.readFileSync(opts.url, 'utf8'); }; // Init timezones timezoneJS.timezone.zoneFileBasePath = 'tz'; // <== If you put the files elsewhere, change this timezoneJS.timezone.init(); // Use it to get a date in Central European Time var d = new timezoneJS.Date(2013, 7, 1, 'CET'); console.log(d.toString()); // "Local" time for the date instance (CET) console.log(d.toUTCString()); // UTC 

... o por supuesto puede usar un transporte que usa HTTP para cargarlos. Me sorprende que la versión npm- de timezone-js no npm- de forma predeterminada algún tipo de transporte basado en archivos en lugar de buscar bibliotecas (con el cheque roto).