jsmreese/moment-duration-format

ReferenceError: window is not defined in v2.3.1

pdcastro opened this issue · 5 comments

I didn't seem to have permission to reopen issue #131, hence creating this new one.
The fix of PR #132 didn't seem to be sufficient:

$ node
> if (window) console.log('exists');
ReferenceError: window is not defined

> if (typeof window !== 'undefined') console.log('exists');
undefined

Known workaround: pin to version ~2.2.2.

I have the same problem here:

"moment-duration-format": "^2.2.2"
node --version v8.14.0
nvm version 1.1.7

ReferenceError: window is not defined
node_modules\moment-duration-format\lib\moment-duration-format.js:1723
if (window && window.Intl && window.Intl.NumberFormat) {

OK OK. Sigh.

Hello,

I found two temp solutions:

  1. Force package.json to use version 2.2.2 "moment-duration-format": "2.2.2"
    or
  2. Append typeof window !== 'undefined' to condition if (window && window.Intl && window.Intl.NumberFormat) { => if (typeof window !== 'undefined' && window && window.Intl && window.Intl.NumberFormat) {

Ref: webpack/webpack#7112 (comment)

Thanks in advance.

favna commented

Got the window error on runkit but locally I get this with v2.3.1 and v2.3.0:

~/Downloads/index.js:4
const dt = moment.duration(process.uptime()).format('DD MM');
                                             ^

TypeError: moment.duration(...).format is not a function
    at Object.<anonymous> (~/Downloads/index.js:4:46)
    at Module._compile (internal/modules/cjs/loader.js:816:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)
    at Module.load (internal/modules/cjs/loader.js:685:32)
    at Function.Module._load (internal/modules/cjs/loader.js:620:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:877:12)
    at internal/main/run_main_module.js:21:11

File content:

const moment = require('moment'); // version 2.24.0
require('moment-duration-format'); // version 2.3.1

const dt = moment.duration(process.uptime()).format('DD MM');

console.log(dt);

Downgrading to 2.2.2 has it work just fine.

Thanks @hyuraku. I've published version 2.3.2 which should fix this issue.