jsmreese / moment-duration-format

Format function plugin for the Moment Duration object.
MIT License
967 stars 121 forks source link

ReferenceError: window is not defined in v2.3.1 #133

Closed pdcastro closed 5 years ago

pdcastro commented 5 years ago

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.

SebastianLibreros commented 5 years ago

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) {

jsmreese commented 5 years ago

OK OK. Sigh.

SebastianLibreros commented 5 years ago

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: https://github.com/webpack/webpack/issues/7112#issuecomment-383866094

Thanks in advance.

favna commented 5 years ago

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.

jsmreese commented 5 years ago

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