-
Notifications
You must be signed in to change notification settings - Fork 169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CommonJS 语法兼容占用了一些关键词 #494
Comments
|
可是我的构建目标是es |
建议,你使用esm语法,构建目标也是esm,也就无需这样处理。 |
正是因为我的源文件和构建目标都是是esm,但仍然出现了该问题,所以我才提出了该问题,稍后有空我会实现一个最小重现给您,感谢回复。 |
了解你的情况,构建目标为es时,electron-vite也会对___dirname这些做兼容处理,因为认为你使用了cjs语法,就会在头部插入和你实现同样的代码,就会有这个错误信息。既然是esm为何还要这样处理,同时require作为nodejs的关键字应该避免作为变量使用。 |
如果一定要这样处理,建议不要占用这些内置的变量,换个名字也不会有问题 |
你也可以直接使用__dirname, electron-vite 会自动处理 |
是的,改变变量名是没问题的,我可能描述的不是很好,但是我最初的核心想法是我们是不是不应该默认开启commonJs语法兼容,因为用户初次使用时可能并不知道该库具有commomJs语法兼容,当它们去实现esm版本的__dirname又或是 |
或者尝试解决语法识别错误,因为它将esm语法识别为了cjs |
Describe the bug
如文档所说electron-vite 兼容一些 CommonJS 语法(包括 require、require.resolve、__filename、__dirname),所以当我使用这些词语作为变量名时electron-vite会抛出错误

The symbol "xxx" has already been declared
。我认为这对于从CommonJS 迁移至 ESM语法时会带来极大的便利,但是对于从最开始就是用ESM语法编写的人不太方便。
比如:当我使用ESM语法开发时,我会去实现ESM版本的__dirname,但是electron-vite却占用了这些命名:

我有试着关闭CommonJS 语法兼容,但是我并没有找到有关信息,似乎他是在electron-vite默认开启的,我们是否应该通过plugin的方式来让用户决定他们的是否需要兼容CommonJS 语法。
Electron-Vite Version
2.2.0
Electron Version
30.0.1
Vite Version
5.2.10
Validations
The text was updated successfully, but these errors were encountered: