martinkr / next-export-i18n

Internationalize (18n) next.js with true support for next export
MIT License
247 stars 37 forks source link

autodetection build error #15

Closed phola closed 2 years ago

phola commented 2 years ago

Hi

Many thanks for creating this!

I have an issue with on CI build since v1.3 I think related to auto-detection. any ideas?

11:45:41.442 | ERR! \|     let browserLang = "";
-- | --
11:45:41.442 | ERR! \|     if (typeof navigator !== "undefined") {
11:45:41.442 | ERR! >         browserLang = ((navigator?.languages && navigator?.languages[0]) \|\|
11:45:41.442 | ERR! \|             navigator?.language)
11:45:41.442 | ERR! \|             .split("-")[0]
martinkr commented 2 years ago

Hi phola,

thank you for reaching out. I assume "navigator" is not available in your test environment (probably pure node nothing linke jsdom). Can you tell me more about the tech stack for your CI build? Are you using jest / mocha ?

Cheers!

phola commented 2 years ago

just checked and this error happens locally too when a component using this hook is included in https://storybook.js.org/ when building storybook (which uses webpack i believe) . Think you are correct maybe a simple if (typeof window === 'undefined') check would fix?

martinkr commented 2 years ago

Hi phola,

can you try the file from the issue-branch: https://github.com/martinkr/next-export-i18n/tree/issue-15/module/dist

In case your CI setup installs all files from the package.json, please add he branch's url instead of the npm-url (https://docs.npmjs.com/cli/v8/configuring-npm/package-json#github-urls)

If everything works out, I'll push a new release, but I don't want to litter npm with "trial versions" ti fix this issue :)

Thank you :)

Cheers!

AlexStefan commented 2 years ago

@martinkr I've overwritten the local index file from node_modules and still getting the same error. This was supposed to fix it?

XamHans commented 2 years ago

@AlexStefan @martinkr Yep me too

XamHans commented 2 years ago

@AlexStefan i have overwritten the getDefaultLanguage to this: const getDefaultLanguage = (userI18n) => { let browserLang; if (navigator) { browserLang = navigator.language.split('-')[0] } if (browserLang && userI18n.translations[browserLang]) { return browserLang; } return userI18n.defaultLang; };

and now it works, i don't know why ? :D

martinkr commented 2 years ago

Hey,

thank you for testing. This is exaclty what the new code from 1.3.1 is doing as well (Adjusting the check for navigator to be more robust). The issue is propably that your CI environment does not have a complete DOM.

Going to release the new code in a few minutes and going to close the issue afterwards.

Cheers1

martinkr commented 2 years ago

v1.3.1