From 1d133936081df4ba5a4dae813d13e49486e7171c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Sun, 28 Feb 2021 14:31:01 +0100 Subject: [PATCH 1/2] fix `require('process')` 5fe121b added a semi-private `_process` alias for the builtin `process` shim. Uses of the global `process` would be replaced by `require('_process')`. That works but you could then not use `require('process')`. As far as I know that has never worked in browserify. There was never a reason for modules to use `require('process')` since the global is available, but it is a thing that exists that should be supported. For webpack 5 users it would also be helpful if the core module shims used `require('process')` because they could take simpler steps to polyfill the environment correctly. And browserify must support `require('process')` before we can do that. --- index.js | 2 +- lib/builtins.js | 2 +- test/process.js | 3 ++- test/process_require.js | 22 ++++++++++++++++++++++ test/process_require/main.js | 3 +++ test/process_require/one.js | 1 + test/process_require/two.js | 1 + 7 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 test/process_require.js create mode 100644 test/process_require/main.js create mode 100644 test/process_require/one.js create mode 100644 test/process_require/two.js diff --git a/index.js b/index.js index 3bf58b0f8..075bdf5d2 100644 --- a/index.js +++ b/index.js @@ -609,7 +609,7 @@ Browserify.prototype._createDeps = function (opts) { } var vars = xtend({ - process: function () { return "require('_process')" }, + process: function () { return "require('process')" }, }, opts.insertGlobalVars); if (opts.bundleExternal === false) { diff --git a/lib/builtins.js b/lib/builtins.js index d7bdbe1ce..01f051680 100644 --- a/lib/builtins.js +++ b/lib/builtins.js @@ -38,4 +38,4 @@ exports.url = require.resolve('url/'); exports.util = require.resolve('util/util.js'); exports.vm = require.resolve('vm-browserify'); exports.zlib = require.resolve('browserify-zlib'); -exports._process = require.resolve('process/browser'); +exports.process = require.resolve('process/browser'); diff --git a/test/process.js b/test/process.js index 83ffa14ff..039cf514a 100644 --- a/test/process.js +++ b/test/process.js @@ -3,10 +3,11 @@ var vm = require('vm'); var test = require('tap').test; test('implicit process global', function (t) { - t.plan(2); + t.plan(3); var b = browserify(__dirname + '/process/main.js'); b.bundle(function (err, src) { + t.ifError(err); var c = { done : function (one, two) { t.equal(one, 1); diff --git a/test/process_require.js b/test/process_require.js new file mode 100644 index 000000000..cb049ca61 --- /dev/null +++ b/test/process_require.js @@ -0,0 +1,22 @@ +var browserify = require('../'); +var vm = require('vm'); +var test = require('tap').test; + +test('explicit process require', function (t) { + t.plan(3); + + var b = browserify(__dirname + '/process_require/main.js'); + b.bundle(function (err, src) { + t.ifError(err); + var c = { + done : function (one, two) { + t.equal(one, 1); + t.equal(two, 2); + t.end(); + }, + setTimeout: setTimeout, + clearTimeout: clearTimeout + }; + vm.runInNewContext(src, c); + }); +}); diff --git a/test/process_require/main.js b/test/process_require/main.js new file mode 100644 index 000000000..b459cd66e --- /dev/null +++ b/test/process_require/main.js @@ -0,0 +1,3 @@ +require('process').nextTick(function () { + done(require('./one'), require('./two')); +}); diff --git a/test/process_require/one.js b/test/process_require/one.js new file mode 100644 index 000000000..bd816eaba --- /dev/null +++ b/test/process_require/one.js @@ -0,0 +1 @@ +module.exports = 1; diff --git a/test/process_require/two.js b/test/process_require/two.js new file mode 100644 index 000000000..4bbffde10 --- /dev/null +++ b/test/process_require/two.js @@ -0,0 +1 @@ +module.exports = 2; From 2db64f8fda54b3b82545d068233b064105ef8606 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Sun, 28 Feb 2021 14:42:32 +0100 Subject: [PATCH 2/2] keep supporting require("_process") --- lib/builtins.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/builtins.js b/lib/builtins.js index 01f051680..ea50f3827 100644 --- a/lib/builtins.js +++ b/lib/builtins.js @@ -39,3 +39,5 @@ exports.util = require.resolve('util/util.js'); exports.vm = require.resolve('vm-browserify'); exports.zlib = require.resolve('browserify-zlib'); exports.process = require.resolve('process/browser'); +// Compatibility alias in case someone has started relying on `require('_process')` +exports._process = require.resolve('process/browser');