davidmyersdev/vite-plugin-node-polyfills

Failed to resolve module specifier "vite-plugin-node-polyfills/shims/global". Relative references must start with either "/", "./", or "../".

jsoneaday opened this issue · 7 comments

Hello I've created an npm package using your package and I am able to build successfully. However when it runs on browser I see the error given. I suspect there is an issue in my vite.config.ts file but not sure what it is. Here's my file

`import { defineConfig } from "vite";
import wasm from "vite-plugin-wasm";
import { nodePolyfills } from "vite-plugin-node-polyfills";
import path from "path";

export default defineConfig({
resolve: {
alias: {
process: "process/browser",
path: "path-browserify",
stream: "stream-browserify",
os: "os-browserify",
},
},
plugins: [
wasm(),
nodePolyfills({
// To exclude specific polyfills, add them to this list.
exclude: [
"fs", // Excludes the polyfill for fs and node:fs.
//"stream",
],
// Whether to polyfill specific globals.
globals: {
Buffer: true,
global: true,
process: true,
},
// Whether to polyfill node: protocol imports.
protocolImports: true,
}),
],
build: {
manifest: true,
minify: true,
reportCompressedSize: true,
lib: {
entry: path.resolve(__dirname, "src/main.ts"),
fileName: "main",
formats: ["es", "cjs"],
},
target: "esnext",
rollupOptions: {
external: [
"vite-plugin-node-polyfills/shims/buffer",
"vite-plugin-node-polyfills/shims/global",
"vite-plugin-node-polyfills/shims/process",
],
},
},
});
`

have the same issue for my linked package
image

@jsoneaday it looks like you are externalizing the shims for buffer, global, and process. Without a full reproduction, I can't diagnose the problem or provide a fix.

have the same issue for my linked package image

Adding vite-plugin-node-polyfills as dependency to the linked package somehow worked, but it is not ideal. I suspect it is because of the linking and rollup is looking for the package in the wrong context? 🤯

I came across this today and was able to resolve it by telling the plugin NOT to polyfill process:

nodePolyfills({
  globals: {
    // Don't polyfill these globals
    process: false,
    Buffer: false,
  },
}),

Downgrading this plugin to 0.17.0 fixed this error for me.