Comments (6)
Ah, that makes sense. I think fs
runs into the same problem with fs/promises
not playing well with packages like memfs
that do not specify subpath exports. I'll see if I can get something working for subpath patterns. 👍
from vite-plugin-node-polyfills.
This relates to #16. I think the best approach here is to use the new overrides
feature to specify a better polyfill for path
that meets your specific use case.
from vite-plugin-node-polyfills.
path-browserify already defaults to the posix implementation and my lib gets bundled for both node (without a polyfill) and web (path-browserify), so I can't change the import to just "path"
as that would be different on windows pcs.
But the main issue is that there's no way to make vite-plugin-node-polyfills resolve the whole path/posix
... instead it concatenates "node_modules/<path polyfill>" + "/posix"
and basically no polyfill has this file structure or subpath pattern.
would it be possible to allow overrides like { 'path/posix': 'foo' }
or is there a better way?
from vite-plugin-node-polyfills.
I've started looking into this, and I found a temporary workaround. Add a custom alias
to your Vite config that points to the corresponding polyfill:
import { defineConfig } from 'vite'
import { nodePolyfills } from 'vite-plugin-node-polyfills'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
nodePolyfills(),
],
resolve: {
alias: {
'path/posix': 'path-browserify',
},
},
})
from vite-plugin-node-polyfills.
That seems to work for the small project I sent earlier but doesn't work for my local one.
After a lot of testing I finally found out that it only happens when https://github.com/solidjs/vite-plugin-solid is active, specifically this line: https://github.com/solidjs/vite-plugin-solid/blob/2b37a130f9f2cbece9e27bbdce6b67f16424866f/src/index.ts#L310
So there's a difference between the resolve.alias being an object and an array with find/replace
Repro: https://stackblitz.com/edit/vitejs-vite-z8v1wp?file=vite.config.js,main.js
I also found another workaround:
import { posix } from 'path';
const { dirname, join, relative } = posix;
from vite-plugin-node-polyfills.
Bump on this.
from vite-plugin-node-polyfills.
Related Issues (20)
- Missing "./shims/global" specifier HOT 4
- TypeError: net.createConnection is not a function HOT 7
- When vite define contains process.env: xx, process polyfill will fail HOT 1
- Migrate to `unenv`
- Release `v1.0.0`
- Cannot find module 'vite-plugin-node-polyfills/shims/buffer' HOT 9
- Missing kMaxLength and SlowBuffer exposure HOT 1
- toString error with zlib starting with 0.18.0 HOT 2
- Failed to resolve module specifier "vite-plugin-node-polyfills/shims/global". Relative references must start with either "/", "./", or "../". HOT 3
- Failed to resolve import "vite-plugin-node-polyfills/shims/buffer" HOT 6
- Error when having type: module in package.json HOT 1
- `process` is not polyfilled if `viteConfig.define` is used to define, for example, a static environment variable in the form of `process.env.var_name` HOT 2
- Cannot access "fs/promises.readFile" in client code.
- bug: config `include: [],` treated as `no option is passed`
- Globals are always defined HOT 1
- Bug: conflict with another middleware plugin HOT 3
- Bug: PassThrough is not exported by "__vite-browser-external" during build
- Bug: exports is not defined HOT 2
- Bug: importing 'crypto' polyfill leads to error `exports is not defined` with yarn build && yarn preview in nuxt HOT 2
- Bug: `node:assert/strict` is not polyfilled
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 vite-plugin-node-polyfills.