2017-02-13 84 views
1

我寫了一個非常基本的express.js應用程序。然後試圖使它成爲一個.js文件。 Browserify將整個事件編譯成一個文件。但是,瀏覽器編譯的代碼不起作用。據我所知,browserify只是用模塊代碼替換require語句。錯誤是:browserify不會編譯express js

C:\Users\HP\n\express\app.js:27025 
    __proto__: http.IncomingMessage.prototype 
           ^

TypeError: Cannot read property 'prototype' of undefined 
    at Object.__dirname.173.accepts (C:\Users\HP\n\express\app.js:27025:34) 
    at s (C:\Users\HP\n\express\app.js:1:316) 
    at C:\Users\HP\n\express\app.js:1:367 
    at Object.__dirname.170../application (C:\Users\HP\n\express\app.js:26823:11) 
    at s (C:\Users\HP\n\express\app.js:1:316) 
    at C:\Users\HP\n\express\app.js:1:367 
    at Object.__dirname.168../lib/express (C:\Users\HP\n\express\app.js:26154:18) 
    at s (C:\Users\HP\n\express\app.js:1:316) 
    at C:\Users\HP\n\express\app.js:1:367 
    at Object.__dirname.153.express (C:\Users\HP\n\express\app.js:24010:15) 

回答

0

Browserify是專門設計的用於瀏覽器包代碼。

Node.js支持一些模塊,瀏覽器不需要模擬builtins。這些模塊將被一個瀏覽器特定的墊片所取代。有些只提供了瀏覽器中有意義的Node API子集。

因此,您正在運行一個應用程序,該應用程序已將所有Node.js模塊轉換爲支持在瀏覽器中運行它的功能,返回模塊可用但不再使用的節點。

嘗試rollup或者你可能配置babel工作像你需要

+0

謝謝您的回答。據我所知,browserify只是通過它們的require語句來合併這些.js文件。我其實不想在瀏覽器中使用它。僅用於將我的所有應用程序收集到文件中。我打算通過「node bundle.js」運行捆綁文件。無法browserify獲取http模塊的代碼到該小文件?因爲在鏈的末尾,在express.js和一些東西之後,http模塊纔會出現。而browserify也可以合併該模塊的代碼,對吧? –

+0

@UmutÖzdemir不,Browserify是專門爲瀏覽器設計的:https://github.com/substack/node-browserify#compatibility也許試試[rollup](http://rollupjs.org),或者你可能會得到[ babel](https://babeljs.io)像你需要的那樣工作。 – Matt