确定加密支持是否不可用
可以在不支持 crypto
模块的情况下构建 Node.js。
在这种情况下,尝试 import
http2
或调用 require('http2')
将导致抛出错误。
使用 CommonJS 时,可以使用 try/catch 捕获抛出的错误:
let http2;
try {
http2 = require('http2');
} catch (err) {
console.log('http2 support is disabled!');
}
当使用词法 ESM import
关键字时,只有在尝试加载模块(例如,使用预加载模块)之前注册 process.on('uncaughtException')
的句柄时,才能捕获错误。
使用 ESM 时,如果有可能在未启用加密支持的 Node.js 版本上运行代码,则考虑使用 import()
函数而不是 import
关键字:
let http2;
try {
http2 = await import('http2');
} catch (err) {
console.log('http2 support is disabled!');
}
It is possible for Node.js to be built without including support for the
crypto
module. In such cases, attempting to import
from http2
or
calling require('http2')
will result in an error being thrown.
When using CommonJS, the error thrown can be caught using try/catch:
let http2;
try {
http2 = require('http2');
} catch (err) {
console.log('http2 support is disabled!');
}
When using the lexical ESM import
keyword, the error can only be
caught if a handler for process.on('uncaughtException')
is registered
before any attempt to load the module is made (using, for instance,
a preload module).
When using ESM, if there is a chance that the code may be run on a build
of Node.js where crypto support is not enabled, consider using the
import()
function instead of the lexical import
keyword:
let http2;
try {
http2 = await import('http2');
} catch (err) {
console.log('http2 support is disabled!');
}