vm_options.backtrace = 1;
vm_options.addons = opts->u.njs.addons;
vm_options.metas = opts->u.njs.metas;
- vm_options.file = opts->file;
vm_options.argv = ngx_argv;
vm_options.argc = ngx_argc;
vm_options.init = 1;
+ vm_options.file.start = njs_mp_alloc(engine->pool, opts->file.length);
+ if (vm_options.file.start == NULL) {
+ return NGX_ERROR;
+ }
+
+ ngx_memcpy(vm_options.file.start, opts->file.start, opts->file.length);
+
vm = njs_vm_create(&vm_options);
if (vm == NULL) {
return NGX_ERROR;
engine->u.njs.vm = vm;
- return NJS_OK;
+ return NGX_OK;
}
js_content fun;
}
+ location /test_exception {
+ js_import exception.js;
+ js_content exception.nonexistent;
+ }
+
location /test_var {
return 200 $test;
}
EOF
+$t->write_file('exception.js', <<EOF);
+ export default {nonexistent};
+
+EOF
+
$t->write_file('main.js', <<EOF);
function version(r) {
r.return(200, njs.version);
like(http_get('/test_fun'), qr/FUN-TEST/s, 'fun');
like(http_get('/proxy/test_fun'), qr/FUN-TEST/s, 'proxy fun');
like(http_get('/test_var'), qr/P-TEST/s, 'foo.bar.p');
+http_get('/test_exception');
+http_get('/test_exception');
$t->stop();
my $content = $t->read_file('error.log');
my $count = () = $content =~ m/js vm init/g;
-ok($count == 4, 'uniq js vm contexts');
+ok($count == 5, 'uniq js vm contexts');
###############################################################################