Skip to content

Nuxt 3.16 - Missing adapter implementation for 'abstractRuntimeString' - make sure to import the appropriate adapter for your platform #2289

Open
@Zelfapp

Description

@Zelfapp

Issue summary

Before opening this issue, I have:

  • Upgraded to the latest version of the relevant packages
    • @shopify/* package and version: "@shopify/shopify-api": "^11.11.1"
    • Node version: 22.14.0
    • Operating system: Ubuntu 22
  • Looked for similar issues in this repository

I'm running a Nuxt 3.16 application. See code below, which in the Nuxt world is a server API. When initializing the shopifyApi(), I'm getting the error:

Missing adapter implementation for 'abstractRuntimeString' - make sure to import the appropriate adapter for your platform

I've attempted to import the node and web-api, but the error persists. Any ideas with Nuxt on how to overcome this adapter issue?

import '@shopify/shopify-api/adapters/node'
import { ApiVersion, shopifyApi } from '@shopify/shopify-api'
import { process } from 'std-env'

export default defineEventHandler(async event => {
  try {
    const SHOPIFY_API_KEY = process.env.SHOPIFY_CLIENT_ID
    const SHOPIFY_API_SECRET = process.env.SHOPIFY_CLIENT_SECRET
    const SHOPIFY_REDIRECT_URI = process.env.SHOPIFY_REDIRECT_URI

    if (!SHOPIFY_API_KEY || !SHOPIFY_API_SECRET || !SHOPIFY_REDIRECT_URI) {
      throw new Error(
        'Invalid Shopify credentials. Please set SHOPIFY_CLIENT_ID and SHOPIFY_CLIENT_SECRET in your environment variables.',
      )
    }

    const SCOPES = ['read_products', 'write_products', 'read_orders', 'write_orders']

    const body = await readBody(event)
    const { storeName } = body

    if (!storeName) {
      throw createError({
        statusCode: 400,
        statusMessage: 'Missing shop URL',
      })
    }

    // Initialize Shopify API
    // https://github.com/Shopify/shopify-app-js/blob/main/packages/apps/shopify-api/docs/reference/shopifyApi.md
    const shopify = shopifyApi({
      apiKey: SHOPIFY_API_KEY,
      apiSecretKey: SHOPIFY_API_SECRET,
      scopes: SCOPES,
      hostName: SHOPIFY_REDIRECT_URI,
      apiVersion: ApiVersion.January25,
      isEmbeddedApp: false,
    })

    // Clean up the shop URL to ensure it's just the domain
    const shop = shopify.utils.sanitizeShop(storeName, true)
    if (!shop) {
      throw createError({
        statusCode: 400,
        statusMessage: 'Invalid shop URL',
      })
    }

    // Create a new auth session
    const callbackPath = '/api/shopify/callback'

    // Generate the authorization URL
    const authSession = await shopify.auth.begin({
      shop,
      callbackPath,
      isOnline: false,
      rawRequest: event.node.req,
    })

    return {
      success: true,
      redirectUrl: authSession,
    }
  } catch (error) {
    const errorMessage =
      error instanceof Error ? error.message : 'Failed to start Shopify installation'

    throw createError({
      statusCode: 500,
      statusMessage: errorMessage,
      data: error,
    })
  }
})

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions