react-native:使用url.parse

时间:2018-10-17 17:14:45

标签: reactjs react-native expo

我正在使用本机url.parse中的节点上的0.54.0(Expo SDK 26)

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”导入Node标准库模块“ url”。它失败了,因为React Native不包括Node标准库。在https://docs.expo.io/versions/latest/introduction/faq.html#can-i-use-nodejs-packages-with-expo

中了解更多信息

几个问题:

这与我的实现有关吗?

似乎与React-native有关,当我更新到SDK 28、29、30时,这是否可以自行解决?

有没有其他选择可以使我在不添加任何其他依赖项的情况下进行相同操作?

(ps:无需为这种简单用例(例如“ url”或“ whatwg-url”)建议依赖项,我不会这样做)

1 个答案:

答案 0 :(得分:1)

当前的捆绑程序实现已禁止所有节点标准库引用。即使它不包括本机实现(在c ++中)。

url不使用本机实现,但是,您必须将其安装为软件包才能使React Natives捆绑器将其理解为依赖项。

回答您的问题:

  • 这与我的实施有关吗?

是的,不要直接从节点导入

  • [...]当我更新[...]时,这会自行解决吗?

不是,这与React Native打包您的JavaScript并将其放入.apk.ipa文件的方式有关。我认为暂时不会改变它。

  • 有没有其他选择可以使我在不添加任何其他依赖项的情况下做到这一点?

是的,复制并粘贴source code或自己实现。