【问题标题】:Type error: Argument of type '{ projectId: string | undefined; }' is not assignable to parameter of type 'SCL| SPD | undefined'类型错误:类型为 \'{ projectId: string | 的参数不明确的; }\' 不可分配给类型为 \'SCL| 的参数防雷器 |不明确的\'
【发布时间】:2022-12-24 20:00:03
【问题描述】:

我正在尝试将我的项目部署到 Vercel,但它似乎给我这个错误,说明以下内容:

类型错误:类型为“{ dataset: string; 的参数”项目编号:字符串 |不明确的; api版本:字符串;使用CDN:布尔值; }' 不可分配给 'SanityClientLike | 类型的参数SanityProject详情 |不明确的'。 输入'{数据集:字符串;项目编号:字符串 |不明确的; api版本:字符串;使用CDN:布尔值; }' 不可分配给类型 'SanityProjectDetails'。 属性“projectId”的类型不兼容。 输入'字符串| undefined' 不可分配给类型 'string'。
类型“undefined”不可分配给类型“string”。

import { createClient } from "next-sanity";
import createImageUrlBuilder from '@sanity/image-url';

export const config = {
    dataset: process.env.NEXT_PUBLIC_SANITY_DATASET || 'production',
    projectId: process.env.NEXT_PUBLIC_SANITY_PROJECT_ID,
    apiVersion: '2021-03-25',
    useCdn: process.env.NODE_ENV === 'production',
};

export const sanityClient = createClient(config);

export const urlFor = (source: any) => createImageUrlBuilder(config).image(source);

它说错误在于 createImageUrlBuilder(config) 行。我不确定这条线有什么问题。如果有人知道如何解决这个问题,我会非常感激。

【问题讨论】:

  • 尝试将 projectId 值替换为 projectId: process.env.NEXT_PUBLIC_SANITY_PROJECT_ID || '' 以满足 Sanity 类型期望的 string 类型。

标签: reactjs next.js vercel sanity


【解决方案1】:

在您的配置中为 projectId 添加一个空字符串值的 OR 条件

export const config = {
    dataset: process.env.NEXT_PUBLIC_SANITY_DATASET || 'production',
    projectId: process.env.NEXT_PUBLIC_SANITY_PROJECT_ID || '',
    apiVersion: '2021-03-25',
    useCdn: process.env.NODE_ENV === 'production',
};

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    相关资源
    最近更新 更多