Skip to content

Commit d6209f3

Browse files
authored
Upgrade to Node 22 as 20 is EOL (#355)
Upgrade http-proxy-middleware to support v22 (new HPM version had several breaking changes to address)
1 parent d1f7f23 commit d6209f3

6 files changed

Lines changed: 54 additions & 36 deletions

File tree

awx/ui/config/webpackDevServer.config.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ const sockHost = process.env.WDS_SOCKET_HOST;
1313
const sockPath = process.env.WDS_SOCKET_PATH; // default: '/ws'
1414
const sockPort = process.env.WDS_SOCKET_PORT;
1515

16-
module.exports = function (proxy, allowedHost) {
16+
module.exports = function (proxy, allowedHost, proxyOptions = {}) {
17+
const { createProxyMiddleware } = proxyOptions;
1718
const disableFirewall =
1819
!proxy || process.env.DANGEROUSLY_DISABLE_HOST_CHECK === 'true';
1920
return {
@@ -111,7 +112,7 @@ module.exports = function (proxy, allowedHost) {
111112

112113
if (fs.existsSync(paths.proxySetup)) {
113114
// This registers user provided middleware for proxy reasons
114-
require(paths.proxySetup)(devServer.app);
115+
require(paths.proxySetup)(devServer.app, createProxyMiddleware);
115116
}
116117

117118
// Redirect to `PUBLIC_URL` or `homepage` from `package.json` if url not match

awx/ui/package-lock.json

Lines changed: 32 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

awx/ui/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"homepage": ".",
44
"private": true,
55
"engines": {
6-
"node": ">=20.19.0"
6+
"node": ">=22.19.0"
77
},
88
"dependencies": {
99
"@lingui/react": "^5.4.0",
@@ -82,7 +82,7 @@
8282
"file-loader": "^6.2.0",
8383
"fs-extra": "^11.3.5",
8484
"html-webpack-plugin": "^5.6.7",
85-
"http-proxy-middleware": "3.0.5",
85+
"http-proxy-middleware": "4.0.0",
8686
"inject-manifest-plugin": "^0.6.5",
8787
"jest": "^30.3.0",
8888
"jest-environment-jsdom": "^30.3.0",

awx/ui/scripts/start.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,12 @@ if (process.env.HOST) {
6868
// browserslist defaults.
6969
const { checkBrowsers } = require('react-dev-utils/browsersHelper');
7070
checkBrowsers(paths.appPath, isInteractive)
71-
.then(() => {
71+
.then(async () => {
7272
// We attempt to use the default port but if it is busy, we offer the user to
7373
// run on a different port. `choosePort()` Promise resolves to the next free port.
7474
return choosePort(HOST, DEFAULT_PORT);
7575
})
76-
.then(port => {
76+
.then(async port => {
7777
if (port == null) {
7878
// We have not found a port.
7979
return;
@@ -106,9 +106,12 @@ checkBrowsers(paths.appPath, isInteractive)
106106
paths.appPublic,
107107
paths.publicUrlOrPath
108108
);
109+
const { createProxyMiddleware } = await import('http-proxy-middleware');
109110
// Serve webpack assets generated by the compiler over a web server.
110111
const serverConfig = {
111-
...createDevServerConfig(proxyConfig, urls.lanUrlForConfig),
112+
...createDevServerConfig(proxyConfig, urls.lanUrlForConfig, {
113+
createProxyMiddleware,
114+
}),
112115
host: HOST,
113116
port,
114117
};

awx/ui/src/setupProxy.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
const { legacyCreateProxyMiddleware } = require('http-proxy-middleware');
2-
31
const TARGET = process.env.TARGET || 'https://localhost:8043';
42

5-
module.exports = (app) => {
3+
module.exports = (app, createProxyMiddleware) => {
4+
if (typeof createProxyMiddleware !== 'function') {
5+
throw new Error('createProxyMiddleware must be provided to setupProxy');
6+
}
7+
68
app.use(
7-
legacyCreateProxyMiddleware(['/api', '/websocket', '/sso'], {
9+
createProxyMiddleware({
10+
pathFilter: ['/api', '/websocket', '/sso'],
811
target: TARGET,
912
secure: false,
1013
ws: true,

tools/ansible/roles/dockerfile/templates/Dockerfile.j2

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ USER root
2727
RUN dnf -y update && dnf install -y 'dnf-command(config-manager)' && \
2828
dnf config-manager --set-enabled crb && \
2929
dnf module reset nodejs -y && \
30-
dnf module enable nodejs:20 -y && \
30+
dnf module enable nodejs:22 -y && \
3131
dnf -y install \
3232
iputils \
3333
gcc \
@@ -40,6 +40,7 @@ RUN dnf -y update && dnf install -y 'dnf-command(config-manager)' && \
4040
make \
4141
{% if not headless|bool %}
4242
nodejs \
43+
npm \
4344
{% endif %}
4445
nss \
4546
openldap-devel \
@@ -149,7 +150,7 @@ RUN pip3.12 install --no-cache-dir -vv virtualenv supervisor dumb-init build &&
149150
{% if (build_dev|bool) or (kube_dev|bool) %}
150151
# Install development/test requirements
151152
RUN dnf module reset nodejs -y && \
152-
dnf module enable nodejs:20 -y && \
153+
dnf module enable nodejs:22 -y && \
153154
dnf -y install \
154155
crun \
155156
gdb \
@@ -167,6 +168,7 @@ RUN dnf module reset nodejs -y && \
167168
libpq-devel \
168169
nodejs \
169170
nss \
171+
npm \
170172
make \
171173
patch \
172174
socat \

0 commit comments

Comments
 (0)