Javascript 如何仅在存在模块时才要求模块。自然反应
例如:Javascript 如何仅在存在模块时才要求模块。自然反应,javascript,react-native,ecmascript-6,microsoft-metro,bundler,Javascript,React Native,Ecmascript 6,Microsoft Metro,Bundler,例如: let tmp; try { tmp = require('module-name'); } catch(e) { return; } 我收到错误(react native Metro Bundler): 如何仅在存在时要求“模块名”?使用该选项将返回解析的文件名 function checkModuleAvailability (module) { try { require.resolve(module); return true } catch(
let tmp;
try {
tmp = require('module-name');
} catch(e) {
return;
}
我收到错误(react native Metro Bundler):
如何仅在存在时要求“模块名”?使用该选项将返回解析的文件名
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
这对我来说很有用:
let myPackage;
const myPackageToRequire = 'my-package-to-require';
try {
myPackage = require.call(null, myPackageToRequire);
} catch (e) {}
变量定义const myPackageToRequire='my package to require'代码>在这里是必需的
希望我能帮上忙。通过try-catch加载可选依赖项已经完成,这反过来意味着您应该能够在React-Native 0.63中使用原始代码,如果您在metro.config.js中打开它的话:
module.exports={
变压器:{
allowOptionalDependencies:true,
},
}
Tryrequire.resolve(软件包名称)
@PritishVaidya不工作((相同错误)当我用我的节点模块中绝对有的模块测试此功能时(InApp Browser reborn),我得到:未知命名模块:“react native InApp Browser reborn”.Hello@Petr Bela,我需要使用可选的依赖项。我已经这样做了,但仍然没有任何更改。你能给我解释一下吗?它对Metro Bundler不起作用。你可能会有[TypeError:\u$$$\ u REQUIRE.resolve不是一个函数。(在“\u$\ u REQUIRE.resolve('package-name')”中,“\u$$\ u REQUIRE.resolve”是未定义的)
let myPackage;
const myPackageToRequire = 'my-package-to-require';
try {
myPackage = require.call(null, myPackageToRequire);
} catch (e) {}