Theo mặc định, browserify không thực hiện các biến đổi trên mô-đun được bao gồm từ node_modules, tức là không có đường dẫn.Cách thực hiện chuyển đổi trên mô-đun npm bằng cách sử dụng browserify
Tôi đã thực hiện một repo github nhanh chóng minh họa nó here. Các tập tin index.js
đó được browserified trông như thế này:
var fs = require('fs');
var testmodule = require('testmodule');
var trg1 = document.getElementById("target1");
var trg2 = document.getElementById("target2");
trg1.innerHTML = fs.readFileSync(__dirname+"/something.txt");
trg2.innerHTML = testmodule();
testmodule
trông như thế này:
var fs = require('fs');
exports = module.exports = function() {
return fs.readFileSync(__dirname+'/data.txt');
}
Sử dụng brfs
chuyển đổi mô-đun, tôi muốn để có thể inline cả các cuộc gọi đến fs.readFileSync
, nhưng khi tôi chạy browserify index.js -t brfs -o bundle.js
, chỉ cuộc gọi trong dự án chính của tôi được nội tuyến. Đây là kết quả bundle.js:
;(function(e,t,n){function r(n,i){if(!t[n]){if(!e[n]){var s=typeof require=="function"&&require;if(!i&&s)return s(n,!0);throw new Error("Cannot find module '"+n+"'")}var o=t[n]={exports:{}};e[n][0](function(t){var i=e[n][1][t];return r(i?i:t)},o,o.exports)}return t[n].exports}for(var i=0;i<n.length;i++)r(n[i]);return r})({1:[function(require,module,exports){
// nothing to see here... no file methods for the browser
},{}],2:[function(require,module,exports){
var fs = require('fs');
var testmodule = require('testmodule');
var trg1 = document.getElementById("target1");
var trg2 = document.getElementById("target2");
trg1.innerHTML = "This is data from a file in the main project folder"; // TRANSFORMED
trg2.innerHTML = testmodule();
},{"fs":1,"testmodule":3}],3:[function(require,module,exports){
(function(__dirname){var fs = require('fs');
exports = module.exports = function() {
return fs.readFileSync(__dirname+'/data.txt'); // NO TRANSFORM
}
})("/node_modules/testmodule")
},{"fs":1}]},{},[2])
;
tại sao bạn không đánh dấu câu trả lời này là câu trả lời đúng? – xorinzor
tôi sẽ đến ngay sau khi tôi viết nó, nhưng dường như nó sẽ không cho phép tôi làm điều đó cho đến 2 ngày sau đó, và tôi đã quên tại thời điểm đó ... – AndyPerlitch
Bạn đã cứu tôi! Cảm ơn nhiều! –