示例:
let tmp;
try {
tmp = require('module-name');
} catch(e) {
return;
}
我收到错误消息(反应为本地Metro Bundler):
error: bundling failed: Error: Unable to resolve module `module-name` from ...
仅在存在时如何要求“模块名”?
答案 0 :(得分:2)
这对我有用:
let myPackage;
const myPackageToRequire = 'my-package-to-require';
try {
myPackage = require.call(null, myPackageToRequire);
} catch (e) {}
此处需要变量定义const myPackageToRequire = 'my-package-to-require';
。
希望我能帮上忙。
答案 1 :(得分:0)
使用require.resolve
将返回解析的文件名。
function checkModuleAvailability (module) {
try {
require.resolve(module);
return true
} catch(e) {
console.log(`${module} not found`);
}
return false
}
const moduleAvailable = checkModuleAvailability(MODULE_NAME) // true or false
答案 2 :(得分:0)
通过try-catch加载可选依赖项已经added in Metro 0.59,这意味着如果您在metro.config.js
中将其打开,则应该能够在React Native 0.63中使用原始代码:>
module.exports = {
transformer: {
allowOptionalDependencies: true,
},
}