Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

purs repl runs into TypeError: React.createClass is not a function #132

Open
andreasthoelke opened this issue Dec 23, 2017 · 0 comments
Open

Comments

@andreasthoelke
Copy link

andreasthoelke commented Dec 23, 2017

I'm running into this issue with all purescript-react based projects (e.g. ethul/purescript-react-example, alexmingoia/pux-starter-app, nwolverson/purescript-thermite-example or this repo purescript-contrib/purescript-react):

I can build the project fine (running e.g. npm install, pulp browserify --to dist/Main.js) and view the app in the browser.

Then I run: bower install purescript-psci-support and pulp repl (or purs repl 'src/**/*.purs' 'bower_components/purescript-*/src/**/*.purs')

I can then use the repl and even import modules that don’t use purescript-react, but once I import a module that imports React, I get his error:

PSCi, version 0.11.7
Type :? for help

> import Prelude
> 1+2
3

> import Main
> 1+2
/Users/andreas.thoelke/Documents/temp/purescript-thermite-example/.psci_modules/node_modules/react/foreign.js:120
  return React.createClass(result);
               ^

TypeError: React.createClass is not a function
    at Object.createClass (.../purescript-thermite-example/.psci_modules/node_modules/react/foreign.js:120:16)

I got some initial help with this at Slack/purescript:

I have a react folder in node-modules and a React folder in ../chapter8/.psci_modules/node_modules

natefaubion [3 days ago]
Oh the React folder in node_modules is probably the bindings

natefaubion [3 days ago]
in psci_modules/node_modules

natefaubion [3 days ago]
its just putting the compiler output within node_modules under psci_modules

natefaubion [3 days ago]
and then I bet there’s case insensitivity issue

natefaubion [3 days ago]
because there’s “react/index.js”

natefaubion [3 days ago]
and then “React/index.js” which is the compiler output

natefaubion [3 days ago]
so it’s doing require("react") which is actually pointing back to itself

natefaubion [3 days ago]
require react resolving to to React, ie the bindings and not the library

paf31 [2 days ago]
.psci_modules/node_modules should exist

paf31 [2 days ago]
React in there is the compiled purs code though

paf31 [2 days ago]
Notice though how purescript-react doesn't use require

paf31 [2 days ago]
React.createClass and so on

paf31 [2 days ago]
React won't be in global scope there

natefaubion [1 day ago]
FWIW, the latest react bindings don’t use a global

natefaubion [1 day ago]
it uses a normal require

I'm still not sure if I'm missing something obvious or if this issue should be raised at https://github.com/purescript/purescript.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant