Подтвердить что ты не робот

Просматривать с помощью путей к папкам в моей системе

Когда я компилирую markdown-символы с помощью Browserify 3.30.2 (browserify file.js -o bundle.js), я получаю что-то вроде этого:

!function(e){if("object"==typeof exports...[function(_dereq_,module,exports){

},{}],2:[function(_dereq_,module,exports){
...
...
[on line 8000] 
    : function (str, start, len) {
        if (start < 0) start = str.length + start;
        return str.substr(start, len);
    }
;

}).call(this,_dereq_("C:\\Users\\Me\\AppData\\Roaming\\npm\\node_modules\\browserify\\node_modules\\insert-module-globals\\node_modules\\process\\browser.js"))
},{"C:\\Users\\Me\\AppData\\Roaming\\npm\\node_modules\\browserify\\node_modules\\insert-module-globals\\node_modules\\process\\browser.js":11}],14:[function(_dereq_,module,exports){
module.exports=_dereq_(3)
},{}],15:[function(_dereq_,module,exports){
module.exports=_dereq_(4)
},{"./support/isBuffer":14,"C:\\Users\\ME\\AppData\\Roaming\\npm\\node_modules\\browserify\\node_modules\\insert-module-globals\\node_modules\\process\\browser.js":11,"inherits":10}],16:[function(_dereq_,module,exports){
var frep = _dereq_('frep');
var file = _dereq_('fs-utils');
var delims = _dereq_('delims');
var _ = _dereq_('lodash');
...

Как вы можете видеть, здесь есть абсолютные пути к моим файлам. Зачем? Как их удалить?

EDIT: вот мой build.js файл

 var browserify = require('browserify-middleware')
fs = require('fs');
var b = browserify('./index.js', {
    'opts.basedir': './'
});
b({
    // Mocks up express req and res
    headers: []
}, {
    getHeader: function () {},
    setHeader: function () {},
    send: function (a) {
        console.log('send', a);
    },
    end: function (a) {
        //console.log('end', a.constructor.name);
        //  fs.write('bundle.js', a, undefined, undefined, function (err) {
        console.log(a.toString());
        //});
        //  a.pipe(fs.createWriteStream('bundle.js'));
    },

});

И запустить node build > bundle.js. та же проблема. Если я заменил значение baseir на instancee ihatebrowserify, будет ошибка о чем-то, что не разрешено.

4b9b3361

Ответ 1

Это натолкнулось на меня и сегодня. Оказывается, теперь существует логическая опция --full-path [0], которая решает проблему.

Например:

browserify -o bundle.js --full-path=false index.js

[0] https://github.com/substack/node-browserify/blob/master/bin/args.js

Ответ 2

Почти 6 месяцев спустя, и я видел ту же проблему. Теперь я нашел обходное решение, которое меня устраивало, и другие могли бы извлечь из этого выгоду.

Google предоставил мне этот отчет о проблеме: https://github.com/thlorenz/browserify-shim/issues/43 - который сообщает об этом раскрытии локального пути в системе "browserify-shim", хотя это "проблема с браузером" из того, что я понял.

Эта проблема предлагает обходное решение:

$ npm install -g intreq browser-pack browser-unpack
$ browserify example/main.js -t browserify-shim | browser-unpack | intreq | browser-pack

Я тестировал это и был доволен результатами. Однако я хотел пойти дальше и интегрировать это в мой Gruntfile.js. Решение, которое я нашел, опробовало и сделало меня счастливым, это использовать unpathify:

Сжатие браузера требует путей для лучшей минимизации, т.е. требует ( "some/long/path" ) = > require (1)

Чтобы использовать его, просто установите unpathify (npm install --save-dev unpathify) и добавьте его в свою сборку:

grunt.initConfig({
  browserify: {
    all: {
      files: {
        'build/all.js': ['some/file.js']
      }
    }
  },
  unpathify: {
    all: {
      src: ['build/all.js']
    }
  }
  // ...
}

Ответ 3

Browserify разрешает абсолютный путь по умолчанию. Если вы не хотите видеть абсолютные пути, вы можете установить options.basedir по своему усмотрению. Например:

var browserify = require('browserify-middleware');
var b = browserify({'opts.basedir': './'});

Ответ 4

Мое лучшее предположение, что где-то есть модули, которые включаются из абсолютных путей.

Это не происходит со мной при использовании браузера.


На самом деле это больше, чем предполагалось.

},{}],2:[function(_dereq_,module,exports){
...
...
}).call(this,_dereq_("C:\\Users\\Me\\AppData\\Roaming\\npm\\node_modules\\browserify\\node_modules\\insert-module-globals\\node_modules\\process\\browser.js"))
},{"C:\\Users\\Me\\AppData\\Roaming\\npm\\node_modules\\browserify\\node_modules\\insert-module-globals\\node_modules\\process\\browser.js":11}],14:[function(_dereq_,module,exports){

У вас есть _dereq_("C:\\Users\\Me\\AppData\\Roaming\\npm\\node_modules\\browserify\\node_modules\\insert-module-globals\\node_modules\\process\\browser.js"); поэтому он должен включать этот модуль.

Если вы установите какой-либо Node глобальный (не знаете, как в Windows), чтобы посмотреть в C:\\Users\\Me\\AppData\\Roaming\\npm\\node_modules, возможно, вам не придется включать полный путь, но я не могу быть уверен.

Ответ 5

Не совсем уверен, что это ответ на исходный вопрос, но у меня была аналогичная проблема. Вложенный файл js и внешний источник (с использованием exorcist), который был сгенерирован, содержали абсолютные пути к папкам в моей системе. После того, как головная боль выяснила, почему, похоже, виновник был babelify (ранее 6to5ify). https://github.com/substack/node-browserify/issues/663 и https://github.com/babel/babelify/issues/19

Решение просто:

browserify --debug -t [babelify - sourceMapRelative.]

или

browserify ({debug: true})             .transform(babelify.configure({ sourceMapRelative:..}))

Ответ 6

Существует новый плагин Browserify, доступный от автора Browserify. Он называется Bundle-Collapser. Он заменит пути папки числовыми индексами.