preact-compat icon indicating copy to clipboard operation
preact-compat copied to clipboard

Issues with [email protected]

Open dignifiedquire opened this issue 7 years ago • 16 comments

I am trying to alias react to preact-compat in my dev environment but running into the following issue:

patch.dev.js:180 Uncaught TypeError: Cannot set property createElement of #<Object> which has only a getter
screen shot 2017-03-29 at 11 21 14

I am using the setup from https://github.com/preact-compat/react and aliasing with webpack.

dignifiedquire avatar Mar 29 '17 09:03 dignifiedquire

Hi there @dignifiedquire - are you using Webpack 1, or 2?

Something is freezing the exports of preact-compat.

developit avatar Mar 29 '17 14:03 developit

I am using [email protected], with the following babel config

"presets": [
    [
      "latest", {
        "es2015": {
          "modules": false
        }
      }
    ],
    "stage-2",
    "react"
  ],

dignifiedquire avatar Mar 29 '17 20:03 dignifiedquire

I know this isn't the most elegant solution, but can you try adding this alias?

{
  alias: {
    'preact-compat': 'preact-compat/dist/preact-compat'
  }
}

I think it's something to do with the CommonJS proxy module re-exporting an ES Module - Webpack seems to be freezing something... somewhere (can't seem to find where).

developit avatar Mar 29 '17 20:03 developit

This works :) thank you

dignifiedquire avatar Mar 29 '17 21:03 dignifiedquire

Ok, that confirms it. Now I just need to figure out if it's Babel or Webpack doing the freezing. Other people will be running into this as libs switch over to shipping ES Modules.

developit avatar Mar 30 '17 11:03 developit

webpack 2.3.2 react-hot-loader v3

Had same issue, that fixed for me too

{
  alias: {
    'preact-compat': 'preact-compat/dist/preact-compat'
  }
}

garmjs avatar Apr 06 '17 21:04 garmjs

~~@garmjs which version of preact-compat was that with?~~ whoop, nevermind was thinking of a different issue. I'm actually not sure what we can do about this since RHL is doing something very odd.

developit avatar Apr 06 '17 21:04 developit

@developit sorry forget to mention its [email protected]

garmjs avatar Apr 06 '17 21:04 garmjs

btw just realized with this hot reload is not working

garmjs avatar Apr 06 '17 22:04 garmjs

For sure - RHL is trying to patch a frozen exports object for some reason. Not sure what the best way to fix this would be, it's just a very odd behavior for RHL.

developit avatar Apr 06 '17 22:04 developit

@developit i'm having another issue with react-modal too, inputs are losing focus onChange, i don't know yet why need to check further and open an issue if needed.

garmjs avatar Apr 06 '17 22:04 garmjs

@garmjs might be a bubbling issue. If something up the DOM tree accidentally registered an onChange handler on a random element like a <div> it'll trigger when blurring descendants.

developit avatar Apr 07 '17 14:04 developit

So interesting enough, I have come back to trying and move my app to preact, but now I get an issue where the app is constantly rerendering if I use hot module reloading. If I remove 'react-hot-loader/patch' from the webpack entry config it stops. Any ideas what this could be?

dignifiedquire avatar Apr 24 '17 22:04 dignifiedquire

Not sure, but RHL is on my list of things to figure out. I've never used it, all the apps I work on just use basic HMR, but I know people really want it. It's likely touching some internal stuff preact-compat doesn't emulate.

developit avatar Apr 25 '17 01:04 developit

This fix works except it then causes issues with using react-dom/server

ERROR in Error: Cannot find module "react-dom/server"
    at webpackMissingModule (webpack:///./html.js?:12:79)
    at Object.eval (webpack:///./html.js?:12:172)
    at eval (webpack:///./html.js?:114:30)
    at Object../html.js (index.js:2425:1)
    at __webpack_require__ (index.js:30:30)
    at index.js:73:18
    at index.js:76:10
    at webpackUniversalModuleDefinition (index.js:3:20)
    at index.js:10:3
    at ContextifyScript.Script.runInContext (vm.js:53:29)

levibuzolic avatar Jul 12 '17 12:07 levibuzolic

@developit that suggestion works to fix that error, but then causes create-react-class alias to fail.

ERROR in ./src/components/Portal.jsx
Module not found: Error: Can't resolve 'create-react-class' in '/Users/ianwilliams/dev/tapwater/frontend/src/components'
 @ ./src/components/Portal.jsx 15:24-53
 @ ./src/components/DraftLink.jsx
 @ ./src/components/DraftContentInput.jsx
 @ ./src/components/DraftBody.jsx
 @ ./src/routes/Draft.jsx
 @ ./src/routes/App.jsx
 @ ./src/components/Root.jsx
 @ ./src/client.js
 @ multi webpack-dev-server/client?http://localhost:3000 webpack/hot/only-dev-server react-hot-loader/patch ./client.js

dictions avatar Sep 28 '17 13:09 dictions