storage icon indicating copy to clipboard operation
storage copied to clipboard

Unable to resolve "@vercel/blob/client"

Open tryzeno opened this issue 1 year ago • 9 comments

Using React Native with Expo and ran yarn add @vercel/blob. When I try to do:

import { upload } from "@vercel/blob/client";
 const newBlob = await upload(name, buffer....

I get:

Unable to resolve "@vercel/blob/client" from "screens/HomeScreen.tsx"

Version:

"@vercel/blob": "^0.15.1",

tryzeno avatar Nov 28 '23 07:11 tryzeno

hey @tryzeno, I just tested "@vercel/blob": "^0.15.1" and it seems to work well. Could you please share a full repro? The issue could be in the tscofing.json or in other configuration settings

correttojs avatar Nov 28 '23 09:11 correttojs

Steps:

  1. Create new expo ts project: yarn create expo-app -t expo-template-blank-typescript
  2. Install "@vercel/blob": "^0.15.1"
  3. Change App.tsx to this
import { StatusBar } from "expo-status-bar";
import { StyleSheet, Text, View } from "react-native";
import { upload } from "@vercel/blob/client";

export default function App() {
  return (
    <View style={styles.container}>
      <Text
        onPress={() => {
          upload(...);
        }}
      >
        Open up App.tsx to start working on your app!
      </Text>
      <StatusBar style="auto" />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
  },
});

Just writing upload in there causes the error, you don't need to setup a whole api route or anything. Let me know if you are unable to replicate.

tryzeno avatar Dec 03 '23 02:12 tryzeno

I successfully executed expo start --web, I even uploaded some content

correttojs avatar Dec 05 '23 10:12 correttojs

closing this since no update since 2 months. If the issue still exists feel free to reopen

luismeyer avatar Feb 01 '24 11:02 luismeyer

@correttojs it doesn't work with ios though

olivierlesnicki avatar Feb 04 '24 14:02 olivierlesnicki

I found if you add:

"resolver": {
    "unstable_enablePackageExports": true
}

to your metro config, the bundler can correctly resolve the @vercel/blob/client import. This is needed because @vercel/blob relies on the exports field in the pjson.

This leads to a different error for me though where import * as crypto from "crypto" can't be resolved. Here it seems like the module resolution is wrong again. It's trying to import from node_modules/@vercel/dist/crypto-browser.js where the real path would be node_modules/@vercel/blob/dist/crypto-browser.js.

If you also run into this issue it might be worth opening an issue in expo or metro

luismeyer avatar Feb 15 '24 11:02 luismeyer

Using React Native with Expo and ran yarn add @vercel/blob. When I try to do:

import { upload } from "@vercel/blob/client";
 const newBlob = await upload(name, buffer....

I get:

Unable to resolve "@vercel/blob/client" from "screens/HomeScreen.tsx"

Version:

"@vercel/blob": "^0.15.1",

I too am getting this error in my react-native project (Expo CNG)

sajeeIfonix avatar Apr 08 '24 10:04 sajeeIfonix

@sajeeIfonix Can you bring this issue over to the expo repository? Our package.json is correct as per https://arethetypeswrong.github.io/?p=%40vercel%2Fblob%400.22.3 so I suspect something is wrong with expo/expo setup here. It would be awesome to find out what 🙏

vvo avatar Apr 16 '24 08:04 vvo

@sajeeIfonix Can you bring this issue over to the expo repository? Our package.json is correct as per https://arethetypeswrong.github.io/?p=%40vercel%2Fblob%400.22.3 so I suspect something is wrong with expo/expo setup here. It would be awesome to find out what 🙏

Thanks for looking into this. I guess we'll use AWS S3 until this issue is resolved.

kevtechi avatar Apr 16 '24 09:04 kevtechi

Hey, this problem still persists and it doesn't look like anyone is working on it on metro side. Just as hint for the vercel team that this issue leads to unuseablity of vercel/blob for all expo users who want to upload from their app via the vercel/blob package.

Edit: The linked issue describes excactly the problem I have while the initial issue seems to differ. So I'm not sure if this are different causes. For completness my error log:

Metro error: Unable to resolve module undici from node_modules/@vercel/blob/dist/chunk-RHJI2NPC.cjs:

None of these files exist:
  * node_modules/@vercel/dist/undici-browser.js(.web.ts|.ts|.web.tsx|.tsx|.web.js|.js|.web.jsx|.jsx|.web.json|.json|.web.cjs|.cjs|.web.mjs|.mjs|.web.scss|.scss|.web.sass|.sass|.web.css|.css)
  * node_modules/@vercel/dist/undici-browser.js
  31 |
  32 | // src/api.ts
> 33 | var _undici = require('undici');

60pfennig avatar Oct 17 '24 11:10 60pfennig