[njs] Modules: fixed merging of js_path directives.
noreply at nginx.com
noreply at nginx.com
Fri Aug 22 17:02:20 UTC 2025
details: https://github.com/nginx/njs/commit/75be83e267147dce17bbea4f59b198b04b1ebad3
branches: master
commit: 75be83e267147dce17bbea4f59b198b04b1ebad3
user: Dmitry Volyntsev <xeioex at nginx.com>
date: Mon, 11 Aug 2025 18:55:18 -0700
description:
Modules: fixed merging of js_path directives.
The issue initially appeared in 1b54abb (0.7.7).
---
nginx/ngx_js.c | 4 ++--
nginx/t/js_paths.t | 23 ++++++++++++++++++++---
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/nginx/ngx_js.c b/nginx/ngx_js.c
index 01d4bb2a..0678c3e6 100644
--- a/nginx/ngx_js.c
+++ b/nginx/ngx_js.c
@@ -3483,7 +3483,7 @@ ngx_js_merge_vm(ngx_conf_t *cf, ngx_js_loc_conf_t *conf,
return NGX_ERROR;
}
- s = prev->imports->elts;
+ s = prev->paths->elts;
for (i = 0; i < prev->paths->nelts; i++) {
path = ngx_array_push(paths);
@@ -3494,7 +3494,7 @@ ngx_js_merge_vm(ngx_conf_t *cf, ngx_js_loc_conf_t *conf,
*path = s[i];
}
- s = conf->imports->elts;
+ s = conf->paths->elts;
for (i = 0; i < conf->paths->nelts; i++) {
path = ngx_array_push(paths);
diff --git a/nginx/t/js_paths.t b/nginx/t/js_paths.t
index 98d87512..95fe07fc 100644
--- a/nginx/t/js_paths.t
+++ b/nginx/t/js_paths.t
@@ -51,6 +51,11 @@ http {
location /test2 {
js_content test.test2;
}
+
+ location /merge {
+ js_path "lib3";
+ js_content test.test3;
+ }
}
}
@@ -60,6 +65,7 @@ $t->write_file('test.js', <<EOF);
import m1 from 'module1.js';
import m2 from 'module2.js';
import m3 from 'lib1/module1.js';
+ import m4 from 'lib3/module3.js';
function test(r) {
r.return(200, m1[r.args.fun](r.args.a, r.args.b));
@@ -70,10 +76,10 @@ $t->write_file('test.js', <<EOF);
}
function test3(r) {
- r.return(200, m3.sum(r.args.a, r.args.b));
+ m4.handler(r);
}
- export default {test, test2};
+ export default {test, test2, test3};
EOF
@@ -81,6 +87,7 @@ my $d = $t->testdir();
mkdir("$d/lib1");
mkdir("$d/lib2");
+mkdir("$d/lib3");
$t->write_file('lib1/module1.js', <<EOF);
function sum(a, b) { return Number(a) + Number(b); }
@@ -97,8 +104,17 @@ $t->write_file('lib2/module2.js', <<EOF);
EOF
+$t->write_file('lib3/module3.js', <<EOF);
+ function handler(r) {
+ r.return(200, 'Hello from lib3');
+ }
+
+ export default {handler};
+
+EOF
+
-$t->try_run('no njs available')->plan(4);
+$t->try_run('no njs available')->plan(5);
###############################################################################
@@ -106,5 +122,6 @@ like(http_get('/test?fun=sum&a=3&b=4'), qr/7/s, 'test sum');
like(http_get('/test?fun=prod&a=3&b=4'), qr/12/s, 'test prod');
like(http_get('/test2?a=3&b=4'), qr/34/s, 'test2');
like(http_get('/test2?a=A&b=B'), qr/AB/s, 'test2 relative');
+like(http_get('/merge'), qr/Hello from lib3/s, 'test merge');
###############################################################################
More information about the nginx-devel
mailing list