Reactjs react native:使用url.parse

Reactjs react native:使用url.parse,reactjs,react-native,expo,Reactjs,React Native,Expo,我在react native 0.54.0 Expo SDK 26中使用了来自节点的url.parse const url = require("url"); const { hostname, pathname } = url.parse(props.currentMessage.image); var extension = pathname.substr(pathname.lastIndexOf(".") + 1); // determine file URL const fileUR

我在react native 0.54.0 Expo SDK 26中使用了来自节点的url.parse

const url = require("url");

const { hostname, pathname } = url.parse(props.currentMessage.image);
var extension = pathname.substr(pathname.lastIndexOf(".") + 1);

// determine file URL
const fileURL = `https://${hostname}${pathname}`;
当更新到SDK 27,并迁移到RN 0.55.2时,我遇到了这个问题

您试图从src/modules/xxx/xxx.js导入节点标准库模块url。它失败,因为React Native不包括节点标准库。阅读更多

几个问题: 它与我的实现有关吗

它似乎与React native有关,当我更新到SDK 28、29、30时,它会自己解决吗

是否有任何替代方案允许我在不添加任何其他依赖项的情况下执行相同的操作


ps:不需要为这个简单的用例(例如“url”或“whatwg url”)建议依赖项,我不会这么做。

当前的绑定器实现已经禁止了所有节点标准库引用。即使它不包含C++中的本机实现。

url不使用本机实现,不过,为了使React Natives bundler将其理解为依赖项,您必须将其作为包安装

回答您的问题:

它与我的实现有关吗? 是,不直接从节点导入

[…]当我更新[…]时,这个问题会自行解决吗? 不,这与React本机如何打包javascript并将其放入.apk ou.ipa文件有关。我想暂时不会改变

是否有任何替代方案允许我在不添加任何其他依赖项的情况下执行相同的操作?
是的,请复制并粘贴或自己实施。

感谢您的宝贵解释。您是否有关于被禁止的所有节点标准库引用的文档或博客公告的链接?我从0.54升到了0.55,在那之前一切都很顺利。我会让这个问题的回答时间再长一点,以鼓励其他替代建议;后来我找到了这个链接,所以我最后添加了https://www.npmjs.com/package/url 到my package.json,它现在可以工作了。感谢您的帮助: