【问题标题】:"Error: path must be a string" (v5.10.0)“错误:路径必须是字符串”(v5.10.0)
【发布时间】:2014-09-01 13:03:05
【问题描述】:

我有这个文件(包含几个 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)

有人知道这可能是什么原因吗?有没有办法可以调试它来尝试找出困扰浏览器的问题?

干杯

【问题讨论】:

    标签: javascript node.js browserify


    【解决方案1】:

    可能你的 package.json 配置有问题,尤其要注意换行!~

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

    【讨论】:

      【解决方案2】:

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

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

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

      您没有说明在此期间您是否更新了模块、添加了新的转换或修改了任何代码。正如您所暗示的那样,这与您现在使用的 browserify 版本完全一致,我会冒昧地猜测它要么是转换失败,要么是您的代码中的错误。

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

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

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

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

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

      【讨论】:

        【解决方案3】:

        您可能忘记使用 npm 安装转换包。例如,如果您在 browserify 中使用 babelify 转换,您可能会忘记安装 babelify。

        【讨论】:

          猜你喜欢
          • 2017-02-23
          • 1970-01-01
          • 1970-01-01
          • 2017-04-23
          • 2018-12-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          相关资源
          最近更新 更多