2017-02-13 9 views
1

Я написал очень простое приложение express.js. Затем попытался сделать его одним .js-файлом. Browserify скомпилировал все это в один файл. Но код, скомпилированный с помощью браузера, не работал. Насколько я знаю, браузеру просто заменяет требуемые заявления модульными кодами. Ошибка:браузер не будет компилировать экспресс 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. Эти модули будут заменены прокладкой, специфичной для браузера. Некоторые из них предоставляют только подмножество API-интерфейса Node, что имеет смысл иметь в браузере.

Итак, вы используете приложение, которое преобразует все модули Node.js, чтобы поддерживать работу в браузере, а также в узле, где модули доступны, но больше не используются.

Попробуйте rollup или вы могли бы настроить babel работать, как вам нужно

+0

Спасибо за ваш ответ. Насколько я знаю, браузеры просто объединяют эти .js-файлы по их требованию. На самом деле я не хочу использовать его в браузере. Просто для того, чтобы собрать все приложение в файл. Я собирался запустить связанный файл с помощью «node bundle.js». Невозможно переименовать код http-модуля в этот маленький файл? Потому что в конце цепи, после express.js и некоторых вещей, приходит http-модуль. И браузер может также слить код этого модуля, верно? –

+0

@ UmutÖzdemir Нет, Browserify разработан специально для браузера: https://github.com/substack/node-browserify#compatibility Возможно, попробуйте [rollup] (http://rollupjs.org) или вы сможете получить [ babel] (https://babeljs.io), чтобы работать так, как вам нужно. – Matt