"错误:路径必须是字符串"(v5.10.0)

orc*_*man 7 javascript node.js browserify

我有这个文件(一大堆几个JS文件),它们曾经与browserify(5.10.0)一起使用,直到几天前,现在却没有.

这就是我正在运行的:

$ browserify index.js -o dist/out.bundle.js
Run Code Online (Sandbox Code Playgroud)

输出是:

Error: path must be a string
at /usr/local/lib/node_modules/browserify/node_modules/resolve/lib/async.js:15:16
at process._tickCallback (node.js:419:13)
Run Code Online (Sandbox Code Playgroud)

有谁知道这会导致什么?有没有办法我可以调试这个来试图弄清楚浏览器化了什么?

干杯

Ala*_*lum 2

遗憾的是,错误消息不是很有帮助,但发生的情况是这样的:

Browserify 使用该resolve模块来查找require调用应加载的文件。不知何故,它没有像通常那样传递路径,而是得到了其他东西(即不是字符串)。

从理论上讲,这几乎可以是任何东西,但我猜测它要么是undefined某个非常荒谬的值,例如对象或函数。基本上任何理论上可以传递require并导致垃圾的东西。

您没有说您是否同时更新了模块、添加了新的转换或修改了任何代码。正如您暗示这与您现在使用的 browserify 版本完全兼容,我将冒险猜测这要么是转换失败,要么是代码中的错误。

尝试查找require您最近修改的代码中的所有调用(自最后一个已知的良好版本以来)。如果你使用源代码控制(我在开玩笑:我在想 git),这应该是相当微不足道的。如果您不使用源代码管理,则应该使用源代码管理。

如果您发现任何新require调用传递字符串以外的内容require(例如多个参数甚至变量),您可能已经找到了罪魁祸首。

如果这没有帮助,请查看是否有任何可能最终导致require调用被修改的转换。这几乎可以是一切。

如果这也没有任何效果,请尝试将所有内容更新到最新版本。如果您使用任何过时的版本,除了可能导致问题之外,它还可以解决您的问题。如果您想避免兼容性问题,请尝试更新到最新的次要版本(对于版本 >= 1.0)或错误修复版本(对于版本 < 1.0)。

如果这仍然没有帮助,请发布更多详细信息,并确保您了解“几天前”工作的代码与您现在拥有的代码之间的确切差异。