2014-09-01 104 views
7

我有這個文件(大量的一對JS文件),過去幾天一直使用browserify(5.10.0 ) ,現在它沒有。「錯誤:路徑必須是字符串」(v5.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) 

任何人都知道什麼可能導致此?有沒有一種方法可以調試,試圖找出什麼困擾browserify?

乾杯

回答

2

可悲的錯誤消息不是非常有幫助的,但發生的事情是這樣的:

Browserify使用resolve模塊來查找文件require調用應該是加載。不知怎麼的,它並沒有像往常那樣傳遞一個路徑,而是得到了別的東西(即不是一個字符串)。

理論上這可能是幾乎任何東西,但我猜它是undefined或者像對象或函數那樣的一些非常荒謬的值。基本上任何理論上可以傳遞給require並導致垃圾。

你沒有說你是否更新模塊,添加新的變換或修改任何代碼。正如你所暗示的,這與你現在正在使用的browserify版本一起工作,我會走到一邊,猜測它是一個變形失誤或者你的代碼中的一個錯誤。

嘗試在您最近修改的代碼(自最後一次正確的版本以來)中查找所有require調用。如果你使用源代碼管理(我在開玩笑的人:我在想git),這應該是相當平凡的。如果你沒有使用源代碼管理,你應該使用源代碼管理。

如果您發現任何新的require調用會將除字符串之外的其他字符傳遞給require(例如多個參數或甚至變量),那麼您可能找到了您的罪魁禍首。

如果這樣做沒有幫助,請查看是否有任何轉換可能以require呼叫被修改爲結束。這可能幾乎是一切。

如果這樣做也沒有任何好處,請嘗試將所有內容更新到最新版本。除了可能導致問題,如果你使用真正過時的版本,它可能會解決你的問題。如果您想避免兼容性問題,請嘗試更新到最新的次要版本(對於版本> = 1.0)或修補程序版本(對於版本< 1.0)。

如果仍然無法解決問題,請發佈更多詳細信息,並確保您瞭解「幾天前」工作的代碼與現在的代碼之間的確切區別。

4

也許有你的package.json配置一些錯誤,尤其是照顧了線變換!〜

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

你是對的! TKS – 2015-06-10 14:57:21

0

你可能已經忘記了安裝與NPM轉換軟件包。例如,如果您使用browserify使用babelify轉換,則可能會忘記安裝babelify。