尝试使模块可选时,React Native中的命名模块未知



这是我之前的问题:

无法解析React Native中的模块-但是我想让模块成为可选的

这是我所指的资源:

如何仅在存在模块的情况下要求模块。React原生

这是我当前的代码:

let GoogleSignin;
const GoogleSigninInit = '@react-native-community/google-signin';
try {
GoogleSignin = require.call(null, GoogleSigninTest);
} catch (e) {
console.log("Google Signin is not found");
}
let FBSDK;
const FBSDKInit = 'react-native-fbsdk';
try {
FBSDK = require.call(null, FBSDKInit);
} catch (e) {
console.log("Facebook SDK is not found");
}
let InAppBrowser;
const InAppBrowserInit = 'react-native-inappbrowser-reborn';
try {
InAppBrowser = require.call(null, InAppBrowserInit);
} catch (e) {
console.log(e);
console.log("InApp Browser is not found");
}
let AppleAuth;
const AppleAuthInit = '@invertase/react-native-apple-authentication';
try {
AppleAuth = require.call(null, AppleAuthInit);
} catch (e) {
console.log("Apple auth is not found");
}

然而,当我尝试使用react-native-inappbrowser-reborn时,它绝对在我的node_modules文件夹中,我会得到以下错误:

Unknown named module: "react-native-inappbrowser-reborn"

因此,我的代码肯定已经消除了可选模块的错误,但它似乎并没有真正加载它们。

有没有一种方法可以实际加载node_modules中的模块?

编辑:

这里是这个特定模块的完整堆栈跟踪,但同样,其他模块也会出现这种情况。

Unknown named module: "react-native-inappbrowser-reborn"
- node_modules/metro/src/lib/polyfills/require.js:95:12 in metroRequire
- node_modules/react-native-keycloak-social-login/src/Login.js:25:25 in <global>
- node_modules/metro/src/lib/polyfills/require.js:321:4 in loadModuleImplementation
- node_modules/metro/src/lib/polyfills/require.js:201:20 in guardedLoadModule
- node_modules/metro/src/lib/polyfills/require.js:128:6 in metroRequire
- node_modules/metro/src/lib/polyfills/require.js:657:4 in runUpdatedModule
- node_modules/metro/src/lib/polyfills/require.js:532:23 in metroHotUpdateModule
- node_modules/metro/src/lib/polyfills/require.js:53:15 in define
* http://127.0.0.1:19001/node_modules/react-native-keycloak-social-login/src/Login.bundle?platform=ios&dev=true&minify=false&modulesOnly=true&runModule=false&shallow=true:1:1 in eval
- node_modules/metro/src/lib/bundle-modules/injectUpdate.js:65:4 in inject

根据README,安装不是完全自动的,您需要根据平台和react本机版本遵循进一步的过程。

如果您遵循了上述步骤,请尝试删除node_modules,运行npm cache clean并重新安装node_module,然后再次运行应用程序。

最新更新