vite icon indicating copy to clipboard operation
vite copied to clipboard

Rest 1/2 of Disable dynamic import wrapper __vite__injectQuery

Open b5414 opened this issue 1 year ago • 3 comments

Description

Reopen https://github.com/vitejs/vite/issues/16241 issue, because only 1/2 is solved for me / for my user case..

The problem is gone but only when I'm running npm run build, and the build version is going good (Thanks @bluwy), but if I running the same code but usings npm run dev (renamed to start in my sample project, which attached below)

Suggested solution

In both cases, vite should skip adding the compiler wrapper (__vite__injectQuery) if this is indicated by a special comment:

  • /* @vite-ignore */

Alternative

undo https://github.com/vitejs/vite/pull/16556 (ha ha)

Additional context

Repo: https://github.com/b5414/sample // attention to src\rendered\assets\background_modules.js:21

To see the issue, just open the console (ctrl + shift + i or f12) of opened google dot com window by extension with S icon

  • if you running build - you will see: test info: <Module>
  • if you running start - you will see: test err: bla bla bla __vite__injectQuery undefined

Validations

b5414 avatar May 14 '24 14:05 b5414

Unfortunately we cannot simply skip injecting __vite__injectQuery as it'll break some apps (https://github.com/vitejs/vite/pull/14851#issuecomment-1791941779). I guess https://github.com/vitejs/vite/pull/9981 could solve this in an ideal way.

sapphi-red avatar May 17 '24 04:05 sapphi-red

@sapphi-red why not?

now VITE is bipolar: on build you got one result, and on running dev - different

You can jump into my sample repo and check why is it important, at least for my existing (and prod) case


~~Idk what is your #9981 case, but if it should work with my case - please, just show me, and~~ reply with comment, like why is it should be "this crunch" and not the All-In-One-Box tool (as vite is, by mho)

b5414 avatar May 17 '24 14:05 b5414

The problem is that I don't manage the file connection/importanation and configureServer with server.middlewares.use doesn't work well, I have tried specifying "?import" in paths but all in vain;

The whole script runs in the "service-worker" (background.js) file where I can't use dynamic loading of files and then the TEXT (directory path for example) goes to the chrome tab where I can't DIRECTLY take the file from the extension's local path as required by the CHROME API


because I believe this text above is hard to understand, once again:

  • func_super_for_inject function which going to be JSON.stringify then JSON.parse by CHROME during the execFunc

  • whole body of func_super_for_inject is ISOLATED, and I only can give the SIMPLE params by arguments, like basic_file_dir

I have tried:

  • const basic_file_dir = '/rendered/assets/basic.js';
  • const basic_file_dir = 'http://localhost:3000/rendered/assets/basic.js?import'; // direct dev path
  • const basic_file_dir = chrome.runtime.getURL('/rendered/assets/basic.js' + '?import');
  • const basic_file_dir = chrome.runtime.getURL('/rendered/assets/basic.js') + '?import';

and I have seen the trying path at console log

and I believe configureServer(server) + server.middlewares.use works only on NOT dynamic import (it means: it's not my case)

b5414 avatar Jun 03 '24 09:06 b5414