2014-10-22 3 views
1

Я просто пытаюсь выработать простой пример создания более одного пакета с браузером, но я не могу заставить его работать. Я начал с этим простым примером из browserify документации (https://github.com/substack/node-browserify#multiple-bundles):Как использовать несколько пакетов в браузере

beep.js:

var robot = require('./robot'); 
alert(robot('beep')); 

robot.js:

module.exports = function (s) { return s.toUpperCase() + '!' }; 

Тогда построить расслоение:

browserify -r ./robot.js > common.js 
browserify -x ./robot.js beep.js -d > beep_bundle.js 

Моя страница:

<!DOCTYPE html> 

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 
    <title>beep</title> 

    <script src="common.js"></script> 
    <script src="beep_bundle.js"></script> 
</head> 
<body> 

</body> 
</html> 

Что я нахожу в том, что, когда он работает, я получаю сообщение об ошибке:

Uncaught Error: Cannot find module '/robot.js' 

Это, кажется, потому что существует расхождение между двумя выходными файлами beep_bundle.js и common.js.

beep_bundle.js (обратите внимание, что строка "/robot.js" появляется в отображении):

(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ 
var robot = require('./robot.js'); 
alert(robot('beep')); 
},{"./robot.js":"/robot.js"}]},{},[1]) 
//# ... 

common.js (обратите внимание, что строка "./robot.js" появляется в отображении):

require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"./robot.js":[function(require,module,exports){ 
module.exports = function (s) { return s.toUpperCase() + '!' }; 
},{}]},{},[]) 
//# ... 

Если я вручную редактировать beep_bundle.js иметь "./robot.js", он работает правильно. Что я должен сделать, чтобы сделать эту работу правильно?

ответ

1

Даже не пытайтесь повторить это с Browserify 5+, это серьезно нарушено ... https://github.com/substack/node-browserify/issues/933

+0

О крысах благодаря я искал возрасты, пытаясь понять это –

+0

Вы радушны. Я бы порекомендовал вам перейти на новейший браузер 4, он работает отлично. – FredyC

Смежные вопросы