Closed topmaxz closed 2 years ago
提供一个最小复现案例我看一下。
有点麻烦,我已经把所有字符串模版改为字符拼接的形式了,还是出这个错误,期间还有不支持的: BinaryExpression 组成类型 MemberExpression
这个错误
提供一个复现案例,我本地不报这个错误,我不知道你是怎么写的导致这个错误。
@wangzongming I am not sure why you cannot repro this, but it is consistent. The issue starts with this vite-plugin-require code here:
newCode = code;
if (fileRegex.test(id)) {
plugins = /(.vue)$/.test(id) ? [require("vue-loader")] : ["jsx"];
ast_1 = parser.parse(code, {
sourceType: "module",
plugins: plugins
The root of the problem is [require("vue-loader")]
is returning [null]
. Then when this gets passed deep into babel:
function hasPlugin(plugins, expectedConfig) {
const [expectedName, expectedOptions] = typeof expectedConfig === "string" ? [expectedConfig, {}] : expectedConfig;
const expectedKeys = Object.keys(expectedOptions);
const expectedOptionsIsEmpty = expectedKeys.length === 0;
return plugins.some(p => {
if (typeof p === "string") {
return expectedOptionsIsEmpty && p === expectedName;
} else {
const [pluginName, pluginOptions] = p; // BOOM
if (pluginName !== expectedName) {
return false;
}
See the "BOOM" line. You can produce the JavaScript error as such:
const p = null;
const [pluginName, pluginOptions] = p;
The question is why is require("vue-loader")
returns null
for so many people, especially when there is a package dependency on it.
怎么解决的
怎么解决的
不清楚怎么能复现这个问题。你可以尝试给复现一个最小案例。
似乎这是一个必现的问题,项目中有 .vue
文件,即使我没有使用 require 语法,也一样会报此错误,@Agendum 提供的信息比较有价值,建议从他提供的代码位置往下看看
@eleven-net-cn 感谢你提供的案例,我已经知道到为什么会提示这个错误了。因为有的 @babel/parser 版本只支持传入的 plugins 配置为二维数组形式。我这就修复。
@eleven-net-cn @Agendum @kissmoment @topmaxz The issue has been fixed. Please update to 1.0.10
看起来似乎和 #17 #14 是类似的
package.json
vite.config.js
在.vue中使用
require('a' + b + '.svg')
等按需加载静态资源都在
src/assets
下,其他模块或组件在类似src/UserHome/Index.vue
路径下请问有解决方法吗?谢谢!