“错误:path必须是string”(v5.10.0)

我有这个文件(一大堆的JS文件的一大堆),过去几天前使用browserify(5.10.0),现在它不。

这就是我正在运行的:

$ browserify index.js -o dist/out.bundle.js 

输出是:

 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) 

任何人都知道是什么原因造成的 有没有一种方法,我可以debugging这个试图找出什么困扰browserify?

干杯

也许你的package.jsonconfiguration有问题,特别要注意行转换!〜

 "browserify": { "transform": [ [ "reactify", { "harmony": "true" } ] ] } 

可悲的是,错误消息不是很有帮助,但发生了什么事情是这样的:

Browserify使用resolve模块来查找require调用的文件。 不知怎的,作为正常传递path,它有其他东西(即不是一个string)。

这在理论上可能是几乎任何东西,但我猜测它可能是undefined或者像对象或函数那样的非常荒谬的价值。 基本上任何理论上可以通过的require和导致垃圾。

你没有说你是否更新模块,添加新的变换或修改任何代码。 正如你所暗示的那样,你现在正在使用的浏览器版本,我会走出去,猜测它是一个转换失误或代码错误。

尝试find您最近修改的代码中的所有require调用(自最后一个已知的良好版本)。 如果你使用源代码控制(我在开玩笑的人:我在想git),这应该是相当平凡的。 如果你不使用源代码pipe理,你应该使用源代码pipe理。

如果你发现任何新的require调用,而不是string以外的require (如多个参数或甚至variables),你可能已经find了你的罪魁祸首。

如果这没有帮助,看看你是否有任何可能最终require调用被修改的变换。 这可能几乎是一切。

如果没有任何好处,请尝试将所有内容更新到最新版本。 除了可能导致问题,如果你使用真的过时的版本,它可能会解决您的问题。 如果要避免兼容性问题,请尝试更新到最新的次要版本(对于版本> = 1.0)或修补程序版本(对于版本<1.0)。

如果仍然没有帮助,请发布更多详细信息,并确保您了解“几天前”的代码和现在的代码之间的确切区别。

你可能忘记了用npm安装变换包。 例如,如果您使用browserify使用babelify转换,则可能会忘记安装babelify。