Comments (7)
I think you will add
require.extensions[".server.js"] = require.extensions[".js"];
on node.js side to get node.js load the .server.js
extension.
and you will add
resolve: {
extensions: ["", ".client.js", ".js"]
}
to the webpack config to make it load the .client.js
extension.
So they all load the correct files, all you still need is a security check for not including .server.js
files.
In the current version this is not possible, but as webpack returns a list of files included, you may scan it for .server.js
files.
I think this is a cool feature and we can add a config options resolve.exclude = [/\.server\.js$/]
which exclude files from the bundle.
from webpack.
Unfortunately your extensions solution doesn't work since node trims everything before the last dot. That's the problem. But maybe I can add a loader for webpack that switches every .server.js
to a .client.js
module.
from webpack.
C:\Users\Sokrates\Eigene Repos\test7>node -v
v0.8.1
C:\Users\Sokrates\Eigene Repos>mkdir test7
C:\Users\Sokrates\Eigene Repos>cd test7
C:\Users\Sokrates\Eigene Repos\test7>echo module.exports = 1 > test.server.js
C:\Users\Sokrates\Eigene Repos\test7>node
> require("./test")
Error: Cannot find module './test'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at repl:1:2
at REPLServer.self.eval (repl.js:111:21)
at Interface.<anonymous> (repl.js:250:12)
at Interface.EventEmitter.emit (events.js:88:17)
at Interface._onLine (readline.js:183:10)
at Interface._line (readline.js:502:8)
> require.extensions[".server.js"] = require.extensions[".js"];
[Function]
> require("./test")
1
from webpack.
Oh sorry ... I must have done something wrong :)
But I also like the loader that switches to a .client
module if present and throws an error if not. In this case the IDE support is better (because in your solution WebStorm is complaining that this file doesn't exist - which is right ;) )
from webpack.
hey, take a look at a newly added feature to postprocess resolved filenames:
resolve: {
postprocess: {
normal: [
function(filename, cb) {
callback(null, filename.replace(/\.server\.js$/, ".client.js"));
}
]
}
}
postprocessors can do async stuff, i. e. you can check file existance, file content or anything else.
from webpack.
I'll dig that, thanks! What's about the normal
-thing? Could you create a documentation of that?
from webpack.
I'll do this.
normal
normal require (targets a file)context
require.context or similar (targets a folder)
from webpack.
Related Issues (20)
- TypeError: Cannot use 'in' operator to search for '../node_modules/webpack/hot/dev-server.js' in undefined HOT 3
- Source Map is inorrect when enable extractComments.banner of terser-webpack-plugin HOT 2
- watchDirectory option for watchOptions HOT 6
- Running docusaurus with `bun` reports type errors HOT 4
- Referencing node.process.versions from sentry yields unexpected token error (GLOBAL OBJECT)
- Remotes causes Host to crash when not loaded in Module Federation HOT 4
- When `require.context` is used in a module that has been discovered through an entry in `resolve.modules`, the keys are duplicated. HOT 4
- Mutiple entries which have its own hmr runtime cause hmr fail
- web worker with cdn occurs cors erro
- `__non_webpack_require__` incompatible with `experiments.outputModule` + `devtool: 'eval-source-map'` HOT 3
- error:03000086:digital envelope routines::initialization error HOT 1
- Dynamic Imports that are marked external are hoisted HOT 6
- New case for "__webpack_modules__[moduleId] is not a function" error with Module Federation HOT 1
- Webpack 5 dealing with globals differently - Not found in changelog
- Eager consumption of a shared module if there are several versions of the module
- Code splitting single JS files based on which functions are used by which parent components or files. HOT 1
- PreOrderIndex and PostOrderIndex are incorrect in some cases
- Exported object names not minified since 5.79 HOT 2
- Empty file emitted for `await import('crypto')` in a dependency despite resolve.fallback.crypto = false
- Different window.open in an async call behaviour between Webpack 4 & Webpack 5 HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from webpack.