我在一个项目中使用 Webpack 5,只是尝试将一些逻辑移至 WebWorker 中。这是我创建工人的方式:
persistenceWorker = new Worker(
new URL('app/engine/persistence/worker', import.meta.url),
);
Run Code Online (Sandbox Code Playgroud)
但是,我现在收到了来自 webpack 的警告:
Circular dependency between chunks with runtime (main, src_app_engine_index_ts)
This prevents using hashes of each other and should be avoided.
Run Code Online (Sandbox Code Playgroud)
这似乎是因为我的工作程序文件导入了传递导入正在创建工作程序的文件的代码。我认为这在我的程序架构中是无法避免的。不过,我不明白这是一个问题 - 没有任何内容导入工作模块,因此引用都应该朝一个方向发展。看起来它正在将创建工作程序作为依赖项计算在内,即使创建工作程序的文件实际上并未导入工作程序文件中的代码。
有没有办法来解决这个问题?重构我的项目以消除“循环依赖”可能是行不通的。
这个警告有多大问题?如果我关闭警告,一切都会正常,而且我不清楚“这可以防止使用彼此的哈希值”在实际中意味着什么。
我正在使用Type Flavoring在我的打字稿应用程序中将不同类型的键分开。但是,我注意到这有一个奇怪的副作用,即允许以下形式的对象
{[key: SomeFlavoredString]: ObjectA}
Run Code Online (Sandbox Code Playgroud)
传递给采用以下形式参数的函数
{[key: SomeOtherFlavoredString]: ObjectB}
Run Code Online (Sandbox Code Playgroud)
不抱怨,这可能会导致一些令人惊讶的错误。这里有一个游乐场
我认为发生的事情是它假设由于键类型是不相交的,所以额外的键是不相关的,因此这些不兼容键的值是不兼容的值并不重要,所以它相当于从打字稿编译器的视角。
有什么方法可以禁用此功能或坚持我的参数在任何键上都不能有任何不兼容的值?这似乎不是理想的行为