我有这个文件(一大堆几个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)
任何人都知道这会导致什么?有没有办法我可以调试这个来试图弄清楚浏览器化了什么?
干杯
答案 0 :(得分:4)
也许你的package.json配置有问题,特别注意换行!〜
"browserify": {
"transform": [
[
"reactify", {
"harmony": "true"
}
]
]
}
答案 1 :(得分:2)
可悲的是,错误消息不是很有用,但是发生了什么:
Browserify使用resolve
模块查找应加载的require
个调用文件。不知何故,它不是像往常一样传递路径,而是获得了其他东西(即不是字符串)。
理论上这几乎可以是任何东西,但我猜测它是undefined
或者某个非常荒谬的价值,如对象或函数。基本上任何理论上都可以传递给require
并导致垃圾的东西。
您没有说明您是否更新了模块,添加了新的转换或修改了任何代码。正如您所暗示的那样,这与您现在使用的浏览器版本完全一致,我会想出一个问题,那就是变换失误或代码中的错误。
尝试在您最近修改过的代码中查找所有require
次调用(自上次已知的良好版本以来)。如果你使用源代码控制(我在开玩笑的人:我在考虑git),这应该是相当微不足道的。如果您不使用源代码管理,则应该使用源代码管理。
如果您发现任何新的require
调用将字符串以外的内容传递给require
(例如多个参数甚至变量),您可能已经找到了罪魁祸首。
如果这没有帮助,请查看是否有任何转换可能会在require
次调用中被调整。这几乎可以说是一切。
如果这也没有任何好处,请尝试将所有内容更新到最新版本。除了可能导致问题,如果您使用任何东西的真正过时的版本,它可能会解决您的问题。如果您想避免兼容性问题,请尝试更新到最新的次要版本(对于版本> = 1.0)或bugfix版本(对于版本< 1.0)。
如果仍然没有帮助,请发布更多详细信息,并确保您了解有效代码与前几天之间的确切差异"以及你现在拥有的代码。
答案 2 :(得分:0)
您可能忘记使用npm安装转换包。例如,如果您使用browserify使用babelify转换,您可能会忘记安装babelify。