2

(下面的代码是一个简单的例子,实际场景更大)

我有两个模块mod1.jsmod2.js,它们捆绑在一起(使用esbuild)。它们共享一个共同的依赖关系,util.js.

问题是:当mod2.js导入代码时util.js(使用相同的别名),名称有冲突。

util.js

export class Util {
  ...
}

mod1.js

import Util from "./util.js";
...

mod2.js

/* this raises an error of variable already declared */
import Util from "./util.js";
...

如果我在 中更改别名mod2.js,错误就会消失,正如预期的那样。但是每次导入时更改别名util.js有点笨拙,让我觉得必须有另一种方法。

有没有更好的方法来指向捆绑在一起的多个模块的共同依赖关系?

提前致谢!

4

1 回答 1

4

在@Bergi's comment的帮助下,我发现我不是esbuild用来捆绑我的文件,而是使用Hugo连接它们,并将其传递给esbuild.

这会导致提到的错误,因为在同一个文件中import有多个s ,它们不能正确识别为有效。相反,使用捆绑我的文件会给我正确的结果。esbuildesbuild

我仍在使用 Hugo,但我有一个它使用的单一入口点,这就是import我的所有脚本。例如,我有另一个文件,比如master.js

master.js

import mod1 from "./mod1.js";
import mod2 from "./mod2.js";

然后我master.js使用它的函数将它传递给 Hugo,该js.Build函数在内部使用esbuild. 这样我可以util.js使用相同的别名导入,因为这些imports 在单独的文件中,使用ES6 链接从esbuild.

于 2020-07-31T05:17:53.087 回答