reactjs/React.NET

ReferenceError: TextEncoder is not defined

m1is opened this issue · 7 comments

m1is commented

I created a ReactJS.NET project using the reactnet-webpack template, then upgraded it from React 16 to the latest v18. However when I try to run the out of the box example I get the following error:

ReferenceError: TextEncoder is not defined
at eval (:145:19) -> var textEncoder = new TextEncoder();
at eval (:7002:5)
at ./node_modules/react-dom/cjs/react-dom-server.browser.development.js (vendor.6d1c51ef.js:23:1)
at webpack_require (runtime.36e5d9f0.js:85:30)
at eval (:6:7)
at ./node_modules/react-dom/server.browser.js (vendor.6d1c51ef.js:59:1)
at webpack_require (runtime.36e5d9f0.js:85:30)
at eval (:6:74)
at eval (:47:30)
at ./Content/components/expose-components.js (main.ab0e9b20.js:35:1)
at webpack_require (runtime.36e5d9f0.js:85:30)
at checkDeferredModules (runtime.36e5d9f0.js:46:23)
at webpackJsonpCallback (runtime.36e5d9f0.js:33:19)
at vendor.6d1c51ef.js:1:53
at JavaScriptEngineSwitcher.V8.V8JsEngine.InnerExecute(String code, String documentName)
at JavaScriptEngineSwitcher.Core.JsEngineBase.Execute(String code, String documentName)
at React.JavaScriptEngineFactory.LoadUserScripts(IJsEngine engine)

How would I go about resolving this?

try downgrading to react and react-dom 16.12.0

change the import of ReactDOMServer to be from either
"react-dom/cjs/react-dom-server-legacy.browser.development" or
"react-dom/cjs/react-dom-server-legacy.browser.production.min.js"
instead of reactdom/server

m1is commented

change the import of ReactDOMServer to be from either "react-dom/cjs/react-dom-server-legacy.browser.development" or "react-dom/cjs/react-dom-server-legacy.browser.production.min.js" instead of reactdom/server

I already abandoned this, just too many issues trying to get it to work with Material UI.

Above solution with linking to the legacy files does not work for me. It keeps throwing the same error, and / or TextEncoder is not a constructor.

I added https://github.com/anonyco/FastestSmallestTextEncoderDecoder as a polyfill in my server webpack configuration and that seemed to have fixed it.

This is due to change React v18 added. The only work around at this time would be to add a polyfill to your build scripts. I started a discussion about plans i have to bring this project up to better support React v18 but its going to require some major changes. #1343