Mercurial > njs
changeset 2601:cf86eb67f0a2
Modules: fixed merging of js_path directives.
The issue initially appeared in 1b54abb (0.7.7).
| author | Dmitry Volyntsev <xeioex@nginx.com> |
|---|---|
| date | Mon, 11 Aug 2025 18:55:18 -0700 |
| parents | 6ce7e16a4a69 |
| children | 840a3f263d08 |
| files | nginx/ngx_js.c nginx/t/js_paths.t |
| diffstat | 2 files changed, 22 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/nginx/ngx_js.c Mon Aug 11 16:25:47 2025 -0700 +++ b/nginx/ngx_js.c Mon Aug 11 18:55:18 2025 -0700 @@ -3483,7 +3483,7 @@ 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 @@ *path = s[i]; } - s = conf->imports->elts; + s = conf->paths->elts; for (i = 0; i < conf->paths->nelts; i++) { path = ngx_array_push(paths);
--- a/nginx/t/js_paths.t Mon Aug 11 16:25:47 2025 -0700 +++ b/nginx/t/js_paths.t Mon Aug 11 18:55:18 2025 -0700 @@ -51,6 +51,11 @@ location /test2 { js_content test.test2; } + + location /merge { + js_path "lib3"; + js_content test.test3; + } } } @@ -60,6 +65,7 @@ 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 @@ } 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 @@ 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 @@ EOF +$t->write_file('lib3/module3.js', <<EOF); + function handler(r) { + r.return(200, 'Hello from lib3'); + } -$t->try_run('no njs available')->plan(4); + export default {handler}; + +EOF + + +$t->try_run('no njs available')->plan(5); ############################################################################### @@ -106,5 +122,6 @@ 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'); ###############################################################################
