Vin*_*243 23 javascript node.js browserify
当我使用Browserify 3.30.2(browserify file.js -o bundle.js
)编译markdown-symbols时,我得到类似的东西:
!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');
...
Run Code Online (Sandbox Code Playgroud)
如您所见,这里有我的文件的绝对路径.为什么?我该如何删除它们?
编辑:这是我的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'));
},
});
Run Code Online (Sandbox Code Playgroud)
并运行node build > bundle.js
.同样的问题.如果我用例如替换basedir值,ihatebrowserify
则会出现关于未解决的问题的错误.
今天我也遇到了这个问题.事实证明,现在有一个布尔选项--full-path
[0]可以解决问题.
例如:
browserify -o bundle.js --full-path=false index.js
Run Code Online (Sandbox Code Playgroud)
[0] https://github.com/substack/node-browserify/blob/master/bin/args.js
差不多6个月后,我看到了同样的问题。现在,我找到了适合自己的解决方法,其他人也可能会从中受益。
Google已向我提供了此问题报告:https : //github.com/thlorenz/browserify-shim/issues/43-尽管它是来自我的理解。
该问题建议一种解决方法:
$ npm install -g intreq browser-pack browser-unpack
$ browserify example/main.js -t browserify-shim | browser-unpack | intreq | browser-pack
Run Code Online (Sandbox Code Playgroud)
我已经对此进行了测试,并对结果感到满意。但是我想走得更远,并将其集成到我的Gruntfile.js中。我找到,测试并令我感到高兴的解决方案是使用unpathify
:
压缩browserify需求路径以实现更好的缩小效果,即require('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']
}
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是,在某个地方,有来自绝对路径的模块。
我使用 browserify 时不会发生这种情况。
事实上,这不仅仅是猜测。
},{}],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){
Run Code Online (Sandbox Code Playgroud)
你有_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
,您可能不必包含完整路径,但我不能确定。
归档时间: |
|
查看次数: |
9779 次 |
最近记录: |