我正在使用本机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”)建议依赖项,我不会这样做)
答案 0 :(得分:1)
当前的捆绑程序实现已禁止所有节点标准库引用。即使它不包括本机实现(在c ++中)。
url
不使用本机实现,但是,您必须将其安装为软件包才能使React Natives捆绑器将其理解为依赖项。
回答您的问题:
是的,不要直接从节点导入
不是,这与React Native打包您的JavaScript并将其放入.apk
或.ipa
文件的方式有关。我认为暂时不会改变它。
是的,复制并粘贴source code或自己实现。