Webpack 忽略依赖项中的动态导入

问题描述 投票:0回答:1

我目前维护两个包,一个是库,另一个是 craco 应用程序。在库中,我想保留动态导入语句:

// library.js
export async function getExternalModule(expression) {
  const { stuff } = await import('http://someserver/' + expression)
  return stuff
}
// craco.tsx
import { getExternalModule } from 'library';

const x = await getExternalModule('some-code.js')

当我在浏览器中运行此代码时,我总是得到一个

cannot find module 'http://someserver/some-code.js'.

我已经尝试过:

// craco.config.js
webpack.resolve.alias = {
  'http://someserver': false
}

webpack.plugins = [
  new webpack.IgnorePlugin({
    resourceRegExp: /http:\/\/someserver/
  })
]

webpack.externals = {
  'http://someserver': 'http://someserver'
}

我知道 Webpack 提供了使用魔术注释来指定要忽略哪些导入表达式的方法,但据我所知,这些方法仅在导入语句位于 craco 应用程序本身中并且在依赖项中不起作用时才有效

有什么方法可以让 webpack 忽略特定的导入语句,或者也许有更好的方法来完成我想做的事情?

javascript webpack create-react-app
1个回答
0
投票

最终我决定使用函数构造函数,即

new Function('path', 'return import(path)')

这不适用于 Jest 等测试框架,对于 NodeJS 可能需要注意,但对于浏览器来说就足够了。

© www.soinside.com 2019 - 2024. All rights reserved.