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

Presets for RN 0.61+? #755

Open
sayzenberg opened this issue Aug 18, 2020 · 5 comments
Open

Presets for RN 0.61+? #755

sayzenberg opened this issue Aug 18, 2020 · 5 comments
Labels

Comments

@sayzenberg
Copy link

Ask your Question

React Native is currently on version 0.63, but the most recent preset package for Haul is for 0.60. Are there any new presets needed/planned for the newer RN version?

@hanayashiki
Copy link

this repo seems dead

@thymikee
Copy link
Member

no it's not :)

@hanayashiki
Copy link

no it's not :)

Glad to hear that, but I haven't noticed any official support for RN 0.63?

@shirakaba
Copy link

shirakaba commented Feb 16, 2021

My setup

I just tried building a fresh [email protected] project using the latest haul:

    "@haul-bundler/babel-preset-react-native": "^0.16.0",
    "@haul-bundler/cli": "^0.22.1",
    "@haul-bundler/preset-0.60": "^0.18.0",

The closest available preset is preset-0.60:

$ yarn haul init
yarn run v1.22.4
$ /Users/jamie/Downloads/MyProject/node_modules/.bin/haul init
ℹ @haul-bundler/preset-0.63 not available. Trying older version...
ℹ @haul-bundler/preset-0.62 not available. Trying older version...
ℹ @haul-bundler/preset-0.61 not available. Trying older version...
ℹ Using Haul preset: @haul-bundler/preset-0.60

Successful native build

The react-native/rn-get-polyfills.js for v0.63 is unchanged from the polyfills introduced by haul-preset-0.60, which is a good start.

The native app builds successfully (provided I disable Flipper or change the version range for it, which is an ongoing React Native issue for macOS, and not related to Haul).

Runtime error

However, once the app starts up and executes the JS bundle, it presents a red error box at run-time:

Unhandled JS Exception: Unexpected token '{'. import call expects exactly one argument.

no stack

Based on that error output, I guess it's finding a static import, i.e. import { SomeDependency } from "some-library";, whilst expecting a dynamic import, i.e. const SomeDependency = await import("module-name");:

(But I could be wrong. Either way, it's something to do with imports/modules).

Of note, others have experienced this exact issue in regular RN projects, so maybe it's not necessarily a haul problem, but I've yet to try their solutions (which all look a bit unlikely): facebook/react-native#24094

But otherwise, I wonder if something about module loading needs to be changed in the default config.

Finally, I just noticed that the React Native CLI seems to have generated a JS project for me rather than a TS one. I'll try a TS one later to see whether it gets any further. Got to go for now, though!

EDIT: Disregard the runtime error above. Looks like I simply missed the instruction to run the development server, which obviously won't have helped things:

npx haul start

@shirakaba
Copy link

shirakaba commented Feb 16, 2021

Trying again, this time with the development server actually running.

First build succeeds and runs successfully

I should note that I receive a deprecation warning from packages/haul-core/src/utils/importModule.ts using the createRequireFromPath() API from the module library:

const currentResolve = ((Module.createRequireFromPath(

info ▶︎ Compiling bundle "index" for platform ios
error ▶︎ (node:58284) [DEP0130] DeprecationWarning:
Module.createRequireFromPath() is deprecated. Use Module.createRequire()
instead.
at loadModule (/Users/jamie/Downloads/MyProject/node_modules/@haul-bundler/cor
e/build/utils/importModule.js:78:42)
at importModule (/Users/jamie/Downloads/MyProject/node_modules/@haul-bundler/c
ore/build/utils/importModule.js:32:19)
at getNormalizedProjectConfigBuilder
(/Users/jamie/Downloads/MyProject/node_modules/@haul-bundler/core/build/config
/getNormalizedProjectConfigBuilder.js:22:40)
at runWebpackCompiler (/Users/jamie/Downloads/MyProject/node_modules/@haul-bun
dler/core-legacy/build/compiler/worker/runWebpackCompiler.js:44:69)
at WebSocket.<anonymous> (/Users/jamie/Downloads/MyProject/node_modules/@haul-
bundler/core-legacy/build/compiler/worker/initWorker.js:40:24)
at WebSocket.emit (events.js:314:20)
at WebSocket.setSocket
(/Users/jamie/Downloads/MyProject/node_modules/ws/lib/websocket.js:177:10)
at ClientRequest.<anonymous>
(/Users/jamie/Downloads/MyProject/node_modules/ws/lib/websocket.js:671:15)
at ClientRequest.emit (events.js:314:20)

... but disregarding that log message, it does build (can't remember how long the cold build took, but the warm build took only around 10 seconds) and run:

image

Upon file changes, no HMR (as expected) nor automatic live reload, but the bundle does update

Upon saving a change to App.js, no HMR occurs (as expected – this is mentioned on the README), but the haul dev server does update its compilation progress bar, indicating that it has noticed the file change.

I had hoped that, even if HMR weren't supported, live reload would occur upon code changes – it seems that this is not the case, however.

Pressing Cmd + R to manually force a live reload does work just fine, however, and the app reloads its bundle in a second. You can see the request for /index.bundle in the development server's logs. Really cool to see that I can easily request the bundle myself with http://localhost:8081/index.bundle?platform=ios.

So as far as I can tell, Haul is fully functioning for [email protected], at least as far as the Hello World demo goes. Really happy to see this working!

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

No branches or pull requests

4 participants