You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止webpack重写import()以使用浏览器原生内置import()方法?

解决方案

你可以通过以下两种常用方式绕过webpack对import()的静态解析,直接使用浏览器原生的动态导入能力:

方案1:使用webpack内置魔法注释(最简便)

在import()内的最前面添加/* webpackIgnore: true */注释,webpack会直接跳过对该导入语句的处理,保留原生导入逻辑:

// 示例代码
async function loadTargetFunction(filePath, funcName) {
  // 该import语句不会被webpack编译替换
  const remoteModule = await import(/* webpackIgnore: true */ filePath)
  return remoteModule[funcName]
}

// 调用示例
const myFunction = await loadTargetFunction(aConstructedPath, '你已知的函数名')
myFunction()

方案2:通过动态执行获取原生import

如果不想依赖webpack的魔法注释,可以通过eval绕开webpack的静态代码分析,直接拿到浏览器原生的import方法:

// 提前获取原生导入方法,webpack不会解析eval内的内容
const nativeImport = (0, eval)('import')

async function loadTargetFunction(filePath, funcName) {
  const remoteModule = await nativeImport(filePath)
  return remoteModule[funcName]
}

注意事项

  • 你加载的远程.js文件必须是标准ES模块格式,才能被原生import()正常解析,若文件为UMD/CommonJS格式,可改用动态创建script标签的方式加载。
  • 需确保远程文件所在服务配置了正确的CORS跨域响应头,否则浏览器会拦截请求。

内容的提问来源于stack exchange,提问作者Yoshiki Ohshima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:06:04