vite-plugins icon indicating copy to clipboard operation
vite-plugins copied to clipboard

require中有模版字符串没有解析

Open zjp1300 opened this issue 4 years ago • 4 comments

const img = require(../../assets/imgs/white.svg) //使用模版字符串 没有转换 const img2 = require('../../assets/imgs/white.svg')

zjp1300 avatar Dec 16 '21 08:12 zjp1300

@originjs/vite-plugin-commonjs会把require转换成import,所以模板字符串没办法支持。 你可以试试 import-expressions.


@originjs/vit-plugin-commonjs will convert require to import, so there is no way to support template literals. You can try import-expressions.

jiawulin001 avatar Dec 16 '21 09:12 jiawulin001

image I used my example to run your one side and found that I didn't pass

zjp1300 avatar Dec 16 '21 09:12 zjp1300

How about replacing require(`react`) withrequire('react')?

jiawulin001 avatar Dec 16 '21 09:12 jiawulin001

node_modules/@originjs/vite-plugin-commonjs/lib/lib.js

-const requireRegex = /{0,2}require\s*(\s*(["'].?["'])\s)/g; +const requireRegex = /{0,2}require\s*(\s*(["'].*?["'])\s*)/g;

-importsString += import * as ${packageName} from ${item[1]};\n; +importsString += import * as ${packageName} from ${item[1].replace(//g, """)};\n`;

我也发现了这个问题,自己修改了下源码,使用 patch-package 本地打了个补丁

jankerli avatar Jun 14 '22 07:06 jankerli