这是我之前的问题:
无法解析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,然后再次运行应用程序。