我在 react-native0.54.0
中使用 node 的url.parse
(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时,因此迁移到RN0.55.2
,我遇到了这个问题
您试图从"src/modules/xxx/xxx.js"导入节点标准库模块"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",我不会这样做(
当前的捆绑器实现已禁止所有节点标准库引用。即使它不包括本机实现(在 c++ 中(。
url
不使用本机实现,但是,您必须将其安装为包才能使 React Natives 捆绑器将其理解为依赖项。
回答您的问题:
- 它与我的实现有关吗?
是,不要直接从节点导入
- [...]当我更新时,这会自行解决吗[...]?
不,这与 React Native 如何打包你的 JavaScript 并放入你的.apk
ou.ipa
文件中有关。我认为它不会在一段时间内改变。
- 是否有任何替代方案可以让我在不添加任何其他依赖项的情况下执行相同的操作?
是的,复制并粘贴源代码或自己实现。