Skip to content

Commit

Permalink
Fix sync resolution (#651)
Browse files Browse the repository at this point in the history
* chore(tests): make breaking case for webpack4

* fix: loadableReady should not resolve synchronously, fixes #634

* chore(size): commit size change
  • Loading branch information
theKashey committed Oct 22, 2020
1 parent c000d24 commit 1725a62
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 11 deletions.
3 changes: 2 additions & 1 deletion examples/webpack/webpack4/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
"build:webpack": "webpack",
"build:lib": "babel -d lib src",
"start": "NODE_ENV=production node lib/server/main.js",
"start:dev": "NODE_ENV=development node -r @babel/register lib/server/main.js"
"start:dev": "NODE_ENV=development node -r @babel/register lib/server/main.js",
"update": "rm ./node_modules/.yarn-integrity && yarn"
},
"devDependencies": {
"@babel/cli": "^7.4.4",
Expand Down
10 changes: 10 additions & 0 deletions examples/webpack/webpack4/src/client/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ import loadable from '@loadable/component'

const X = loadable(props => import(`./letters/${props.letter}`))

const ClientSideOnly = loadable(props => import(`./letters/${props.letter}`), {
ssr: false,
})

const Moment = loadable.lib(() => import('moment'), {
resolveComponent: moment => moment.default || moment,
})
Expand All @@ -12,6 +16,12 @@ const App = () => (
<p>
Lazy load letter A:<X letter="A" />
</p>
<p>
Lazy load letter C:<X letter="B" />
</p>
<p>
Lazy load letter only on Client C:<ClientSideOnly letter="C" />
</p>
<p>
lazy load momentjs:
<Moment>{moment => `now is : ${moment().format('HH:mm')}`}</Moment>
Expand Down
3 changes: 3 additions & 0 deletions examples/webpack/webpack4/src/client/letters/B.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const B = () => 'Lazy-Letter-B'

export default B
3 changes: 3 additions & 0 deletions examples/webpack/webpack4/src/client/letters/C.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const C = () => 'Lazy-Letter-C'

export default C
8 changes: 7 additions & 1 deletion examples/webpack/webpack4/src/server/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,18 @@ import { ChunkExtractor } from '@loadable/server'
const app = express();

// https://github.com/gregberge/loadable-components/issues/634
app.use('*/runtime~main.js', async (req, res, next) => {
app.use('*/runtime~main*.js', async (req, res, next) => {
console.log('delaying runtime chunk');
await new Promise(resolve => setTimeout(resolve, 2000));
next();
});

app.use('*/letters*.js', async (req, res, next) => {
console.log('delaying letters chunk');
await new Promise(resolve => setTimeout(resolve, 1000));
next();
});

app.use(express.static(path.join(__dirname, '../../public')))

if (process.env.NODE_ENV !== 'production') {
Expand Down
3 changes: 2 additions & 1 deletion examples/webpack/webpack5/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
"build:webpack": "webpack",
"build:lib": "babel -d lib src",
"start": "NODE_ENV=production node lib/server/main.js",
"start:dev": "NODE_ENV=development node -r @babel/register lib/server/main.js"
"start:dev": "NODE_ENV=development node -r @babel/register lib/server/main.js",
"update": "rm ./node_modules/.yarn-integrity && yarn"
},
"devDependencies": {
"@babel/cli": "^7.4.4",
Expand Down
12 changes: 6 additions & 6 deletions packages/component/.size-snapshot.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"dist/loadable.cjs.js": {
"bundled": 16361,
"minified": 7300,
"gzipped": 2563
"bundled": 16354,
"minified": 7304,
"gzipped": 2565
},
"dist/loadable.esm.js": {
"bundled": 15982,
"minified": 6996,
"gzipped": 2497,
"bundled": 15975,
"minified": 7000,
"gzipped": 2495,
"treeshaked": {
"rollup": {
"code": 276,
Expand Down
3 changes: 1 addition & 2 deletions packages/component/src/loadableReady.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ export default function loadableReady(
if (!resolved) {
resolved = true
resolve()
done()
}
}
}
Expand All @@ -73,5 +72,5 @@ export default function loadableReady(
}

checkReadyState()
})
}).then(done);
}

0 comments on commit 1725a62

Please sign in to comment.