refactor: get rid of global.env, use process.env.NODE_ENV

This commit is contained in:
Barış Soner Uşaklı
2026-01-21 20:14:15 -05:00
parent 2ded681396
commit 07d1f22401
15 changed files with 22 additions and 27 deletions

1
app.js
View File

@@ -33,7 +33,6 @@ const path = require('path');
const file = require('./src/file'); const file = require('./src/file');
process.env.NODE_ENV = process.env.NODE_ENV || 'production'; process.env.NODE_ENV = process.env.NODE_ENV || 'production';
global.env = process.env.NODE_ENV || 'production';
// Alternate configuration file support // Alternate configuration file support
const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json'); const configFile = path.resolve(__dirname, nconf.any(['config', 'CONFIG']) || 'config.json');

View File

@@ -97,7 +97,6 @@ nconf.argv(opts).env({
}); });
process.env.NODE_ENV = process.env.NODE_ENV || 'production'; process.env.NODE_ENV = process.env.NODE_ENV || 'production';
global.env = process.env.NODE_ENV || 'production';
prestart.setupWinston(); prestart.setupWinston();
@@ -139,7 +138,6 @@ program
.description('Start NodeBB in verbose development mode') .description('Start NodeBB in verbose development mode')
.action(() => { .action(() => {
process.env.NODE_ENV = 'development'; process.env.NODE_ENV = 'development';
global.env = 'development';
require('./running').start({ ...program.opts(), dev: true }); require('./running').start({ ...program.opts(), dev: true });
}); });
program program
@@ -206,7 +204,6 @@ program
.action((targets, options) => { .action((targets, options) => {
if (program.opts().dev) { if (program.opts().dev) {
process.env.NODE_ENV = 'development'; process.env.NODE_ENV = 'development';
global.env = 'development';
} }
require('./manage').build(targets.length ? targets : true, options); require('./manage').build(targets.length ? targets : true, options);
}) })
@@ -296,7 +293,6 @@ program
options.unattended = program.opts().unattended; options.unattended = program.opts().unattended;
if (program.opts().dev) { if (program.opts().dev) {
process.env.NODE_ENV = 'development'; process.env.NODE_ENV = 'development';
global.env = 'development';
} }
require('./upgrade').upgrade(scripts.length ? scripts : true, options); require('./upgrade').upgrade(scripts.length ? scripts : true, options);
}); });

View File

@@ -69,7 +69,7 @@ async function getNotices() {
}); });
} }
if (global.env !== 'production') { if (process.env.NODE_ENV !== 'production') {
notices.push({ notices.push({
done: false, done: false,
notDoneText: '[[admin/dashboard:running-in-development]]', notDoneText: '[[admin/dashboard:running-in-development]]',

View File

@@ -510,7 +510,7 @@ helpers.formatApiResponse = async (statusCode, res, payload) => {
const returnPayload = await helpers.generateError(statusCode, message, res); const returnPayload = await helpers.generateError(statusCode, message, res);
returnPayload.response = response; returnPayload.response = response;
if (global.env === 'development') { if (process.env.NODE_ENV === 'development') {
returnPayload.stack = payload.stack; returnPayload.stack = payload.stack;
process.stdout.write(`[${chalk.yellow('api')}] Exception caught, error with stack trace follows:\n`); process.stdout.write(`[${chalk.yellow('api')}] Exception caught, error with stack trace follows:\n`);
process.stdout.write(payload.stack); process.stdout.write(payload.stack);

View File

@@ -24,7 +24,7 @@ Dependencies.check = async function () {
if (depsMissing) { if (depsMissing) {
throw new Error('dependencies-missing'); throw new Error('dependencies-missing');
} else if (depsOutdated && global.env !== 'development') { } else if (depsOutdated && process.env.NODE_ENV !== 'development') {
throw new Error('dependencies-out-of-date'); throw new Error('dependencies-out-of-date');
} }
}; };

View File

@@ -221,7 +221,7 @@ middleware.privateUploads = function privateUploads(req, res, next) {
}; };
middleware.busyCheck = function busyCheck(req, res, next) { middleware.busyCheck = function busyCheck(req, res, next) {
if (global.env === 'production' && meta.config.eventLoopCheckEnabled && toobusy()) { if (process.env.NODE_ENV === 'production' && meta.config.eventLoopCheckEnabled && toobusy()) {
analytics.increment('errors:503'); analytics.increment('errors:503');
res.status(503).type('text/html').sendFile(path.join(__dirname, '../../public/503.html')); res.status(503).type('text/html').sendFile(path.join(__dirname, '../../public/503.html'));
} else { } else {

View File

@@ -88,7 +88,7 @@ module.exports = function (middleware) {
if (req.route && req.route.path === '/api/') { if (req.route && req.route.path === '/api/') {
options.title = '[[pages:home]]'; options.title = '[[pages:home]]';
} }
req.app.set('json spaces', global.env === 'development' || req.query.pretty ? 4 : 0); req.app.set('json spaces', process.env.NODE_ENV === 'development' || req.query.pretty ? 4 : 0);
return res.json(options); return res.json(options);
} }
const optionsString = JSON.stringify(options).replace(/<\//g, '<\\/'); const optionsString = JSON.stringify(options).replace(/<\//g, '<\\/');

View File

@@ -90,7 +90,7 @@ Hooks.unregister = function (id, hook, method) {
Hooks.fire = async function (hook, params) { Hooks.fire = async function (hook, params) {
const hookList = plugins.loadedHooks[hook]; const hookList = plugins.loadedHooks[hook];
const hookType = hook.split(':')[0]; const hookType = hook.split(':')[0];
if (global.env === 'development' && hook !== 'action:plugins.firehook' && hook !== 'filter:plugins.firehook') { if (process.env.NODE_ENV === 'development' && hook !== 'action:plugins.firehook' && hook !== 'filter:plugins.firehook') {
winston.debug(`[plugins/fireHook] ${hook}`); winston.debug(`[plugins/fireHook] ${hook}`);
} }
@@ -160,7 +160,7 @@ async function fireFilterHook(hook, hookList, params) {
async function fireMethod(hookObj, params) { async function fireMethod(hookObj, params) {
if (typeof hookObj.method !== 'function') { if (typeof hookObj.method !== 'function') {
if (global.env === 'development') { if (process.env.NODE_ENV === 'development') {
winston.warn(`[plugins] Expected method for hook '${hook}' in plugin '${hookObj.id}' not found, skipping.`); winston.warn(`[plugins] Expected method for hook '${hook}' in plugin '${hookObj.id}' not found, skipping.`);
} }
return params; return params;
@@ -185,7 +185,7 @@ async function fireActionHook(hook, hookList, params) {
} }
for (const hookObj of hookList) { for (const hookObj of hookList) {
if (typeof hookObj.method !== 'function') { if (typeof hookObj.method !== 'function') {
if (global.env === 'development') { if (process.env.NODE_ENV === 'development') {
winston.warn(`[plugins] Expected method for hook '${hook}' in plugin '${hookObj.id}' not found, skipping.`); winston.warn(`[plugins] Expected method for hook '${hook}' in plugin '${hookObj.id}' not found, skipping.`);
} }
} else { } else {
@@ -219,7 +219,7 @@ async function fireStaticHook(hook, hookList, params) {
async function fireMethod(hookObj, params) { async function fireMethod(hookObj, params) {
if (typeof hookObj.method !== 'function') { if (typeof hookObj.method !== 'function') {
if (global.env === 'development') { if (process.env.NODE_ENV === 'development') {
winston.warn(`[plugins] Expected method for hook '${hook}' in plugin '${hookObj.id}' not found, skipping.`); winston.warn(`[plugins] Expected method for hook '${hook}' in plugin '${hookObj.id}' not found, skipping.`);
} }
return params; return params;
@@ -256,7 +256,7 @@ async function fireResponseHook(hook, hookList, params) {
} }
for (const hookObj of hookList) { for (const hookObj of hookList) {
if (typeof hookObj.method !== 'function') { if (typeof hookObj.method !== 'function') {
if (global.env === 'development') { if (process.env.NODE_ENV === 'development') {
winston.warn(`[plugins] Expected method for hook '${hook}' in plugin '${hookObj.id}' not found, skipping.`); winston.warn(`[plugins] Expected method for hook '${hook}' in plugin '${hookObj.id}' not found, skipping.`);
} }
} else { } else {

View File

@@ -78,12 +78,12 @@ Plugins.init = async function (nbbApp, nbbMiddleware) {
middleware = nbbMiddleware; middleware = nbbMiddleware;
} }
if (global.env === 'development') { if (process.env.NODE_ENV === 'development') {
winston.verbose('[plugins] Initializing plugins system'); winston.verbose('[plugins] Initializing plugins system');
} }
await Plugins.reload(); await Plugins.reload();
if (global.env === 'development') { if (process.env.NODE_ENV === 'development') {
winston.info('[plugins] Plugins OK'); winston.info('[plugins] Plugins OK');
} }

View File

@@ -18,7 +18,7 @@ module.exports = function (Plugins) {
}; };
Plugins.submitUsageData = async function () { Plugins.submitUsageData = async function () {
if (!meta.config.submitPluginUsage || !Plugins.loadedPlugins.length || global.env !== 'production') { if (!meta.config.submitPluginUsage || !Plugins.loadedPlugins.length || process.env.NODE_ENV !== 'production') {
return; return;
} }

View File

@@ -11,7 +11,7 @@ exports.getOrCreate = function () {
maxSize: meta.config.postCacheSize, maxSize: meta.config.postCacheSize,
sizeCalculation: function (n) { return n.length || 1; }, sizeCalculation: function (n) { return n.length || 1; },
ttl: 0, ttl: 0,
enabled: global.env === 'production', enabled: process.env.NODE_ENV === 'production',
}); });
} }

View File

@@ -3,7 +3,7 @@
const winston = require('winston'); const winston = require('winston');
function warn(msg) { function warn(msg) {
if (global.env === 'development') { if (process.env.NODE_ENV === 'development') {
winston.warn(msg); winston.warn(msg);
} }
} }

View File

@@ -136,12 +136,12 @@ function setupExpressApp(app) {
}); });
app.set('view engine', 'tpl'); app.set('view engine', 'tpl');
app.set('views', viewsDir); app.set('views', viewsDir);
app.set('json spaces', global.env === 'development' ? 4 : 0); app.set('json spaces', process.env.NODE_ENV === 'development' ? 4 : 0);
app.use(flash()); app.use(flash());
app.enable('view cache'); app.enable('view cache');
if (global.env !== 'development') { if (process.env.NODE_ENV !== 'development') {
app.enable('cache'); app.enable('cache');
app.enable('minification'); app.enable('minification');
} }

View File

@@ -13,7 +13,7 @@ const url = require('url');
const util = require('util'); const util = require('util');
process.env.NODE_ENV = process.env.TEST_ENV || 'production'; process.env.NODE_ENV = process.env.TEST_ENV || 'production';
global.env = process.env.NODE_ENV || 'production';
if (!process.env.hasOwnProperty('CI')) { if (!process.env.hasOwnProperty('CI')) {
process.env.CI = 'true'; process.env.CI = 'true';
} }
@@ -125,7 +125,7 @@ if (testDbConfig.database === productionDbConfig.database &&
nconf.set(dbType, testDbConfig); nconf.set(dbType, testDbConfig);
winston.info('database config %s', dbType, testDbConfig); winston.info('database config %s', dbType, testDbConfig);
winston.info(`environment ${global.env}`); winston.info(`environment ${process.env.NODE_ENV}`);
const db = require('../../src/database'); const db = require('../../src/database');

View File

@@ -729,8 +729,8 @@ describe('Post\'s', () => {
}); });
it('should store post content in cache', (done) => { it('should store post content in cache', (done) => {
const oldValue = global.env; const oldValue = process.env.NODE_ENV;
global.env = 'production'; process.env.NODE_ENV = 'production';
const postData = { const postData = {
pid: 9999, pid: 9999,
content: 'some post content', content: 'some post content',
@@ -739,7 +739,7 @@ describe('Post\'s', () => {
assert.ifError(err); assert.ifError(err);
posts.parsePost(postData, (err) => { posts.parsePost(postData, (err) => {
assert.ifError(err); assert.ifError(err);
global.env = oldValue; process.env.NODE_ENV = oldValue;
done(); done();
}); });
}); });