moxystudio / webpack-isomorphic-dev-middleware

The webpack-dev-middleware, but for isomorphic applications
MIT License
39 stars 6 forks source link

[Bug] memoryFs not able to load dynamic chunks on node #80

Open verydanny opened 5 years ago

verydanny commented 5 years ago

I'm not sure if this a memoryFs issue or how 'webpack-isomorphic-dev-middleware' uses require-from-string, but it loses context for dynamic chunks. I realize a lot of people use dynamic-import-node, but I need to split chunks on server and client for testing reasons. The client version works perfectly.

Example:

import React, { Component } from 'react'

import('components/home' /* webpackChunkName: "home" */ ).then(m => console.log(m))

export class App extends Component {
  render() {
    return (
      <div>
        Hello
      </div>
    )
  }
}

Error:

webpack built 4172638846f7abb54e0d in 724ms
MODULE_NOT_FOUND: Cannot find module './home.js'
- loader.js:603 Function.Module._resolveFilename
    internal/modules/cjs/loader.js:603:15
  - loader.js:529 Function.Module._load
    internal/modules/cjs/loader.js:529:25
  - loader.js:657 Module.require
    internal/modules/cjs/loader.js:657:17
  - helpers.js:22 require
    internal/modules/cjs/helpers.js:22:18
  - server.js:708 Function.requireEnsure [as e]
    /Users/dveremchuk/source/webpack4-react-new/lib/server/server.js:708:25
  - server.js:86 Function.fn.e
    /Users/dveremchuk/source/webpack4-react-new/lib/server/server.js:86:40
  - app.tsx:10 eval
    webpack-internal:///./src/containers/app.tsx:10:21
  - server.js:796 Module../src/containers/app.tsx
    /Users/dveremchuk/source/webpack4-react-new/lib/server/server.js:796:1
  - server.js:689 __webpack_require__
    /Users/dveremchuk/source/webpack4-react-new/lib/server/server.js:689:30
  - server.js:60 fn
    /Users/dveremchuk/source/webpack4-react-new/lib/server/server.js:60:20
verydanny commented 5 years ago

I dug into this yesterday, I don't believe this is possible unless a different in-memory filesystem is used, or node's Module._findPath is rewritten inside, specifically for memoryFs.