davidmyersdev / vite-plugin-node-polyfills

A Vite plugin to polyfill Node's Core Modules for browser environments.
MIT License
263 stars 17 forks source link

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

Open jsoneaday opened 4 months ago

jsoneaday commented 4 months ago

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", ], }, }, }); `

andriirak commented 4 months ago

have the same issue for my linked package image

davidmyersdev commented 4 months ago

@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.

bompi88 commented 2 months ago

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? 🤯

JordanBerger commented 1 day ago

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,
  },
}),