From 909a8704005046746b46686843bfe11f1874fff0 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sat, 14 Dec 2019 11:14:02 -0500 Subject: [PATCH 1/2] wasi: require CLI flag to require() wasi module This commit ensures that the WASI module cannot be require()'ed without a CLI flag while the module is still experimental. This fixes a regression from https://github.com/nodejs/node/pull/30778. --- lib/internal/bootstrap/pre_execution.js | 9 ++++----- test/wasi/test-wasi-require-flag.js | 9 +++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 test/wasi/test-wasi-require-flag.js diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js index 0529bd6585261d..47c709b424ec14 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js @@ -401,11 +401,10 @@ function initializePolicy() { } function initializeWASI() { - if (getOptionValue('--experimental-wasi-unstable-preview0')) { - const { NativeModule } = require('internal/bootstrap/loaders'); - const mod = NativeModule.map.get('wasi'); - mod.canBeRequiredByUsers = true; - } + const { NativeModule } = require('internal/bootstrap/loaders'); + const mod = NativeModule.map.get('wasi'); + mod.canBeRequiredByUsers = + getOptionValue('--experimental-wasi-unstable-preview0'); } function initializeCJSLoader() { diff --git a/test/wasi/test-wasi-require-flag.js b/test/wasi/test-wasi-require-flag.js new file mode 100644 index 00000000000000..0a52ea952d2785 --- /dev/null +++ b/test/wasi/test-wasi-require-flag.js @@ -0,0 +1,9 @@ +'use strict'; +// This test verifies that the WASI module cannot be require()'ed without a +// CLI flag while it is still experimental. +require('../common'); +const assert = require('assert'); + +assert.throws(() => { + require('wasi'); +}, /^Error: Cannot find module 'wasi'/); From 5a547f30fce4b06b03144f5f228b9dc0040b4449 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sat, 14 Dec 2019 21:43:54 -0500 Subject: [PATCH 2/2] fixup! wasi: require CLI flag to require() wasi module --- src/node_native_module.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/node_native_module.cc b/src/node_native_module.cc index 814adb620dcf8a..43c13ea30a0dc5 100644 --- a/src/node_native_module.cc +++ b/src/node_native_module.cc @@ -98,6 +98,7 @@ void NativeModuleLoader::InitializeModuleCategories() { #endif // !HAVE_OPENSSL "sys", // Deprecated. + "wasi", // Experimental. "internal/test/binding", "internal/v8_prof_polyfill", "internal/v8_prof_processor",