slice-machine: Got "Internal Error: Slice not created" when creating slice and "Error in `@slicemachine/adapter-next` during `slice:update` hook: Cannot read properties of undefined (reading 'startsWith')" when updating slice

Versions

  • slice-machine-ui: 1.5.1
  • node: v16.20.0 and v18.16.1

Reproduction

  1. npm install
  2. npm run dev
  3. Open localhost:9999/slices and then proceed to create Slice
  4. Shown “Internal Error: Slice not created”. Checked on Dev Tools, console, etc no further error information
  5. Select one of the previously created Slice. Update few field
  6. Click “Save to File System”, got error “Error in @slicemachine/adapter-next during slice:update hook: Cannot read properties of undefined (reading ‘startsWith’)”
Additional Details Last changes made before got the error was updating `@prismic/next` from `0.1.2` to `1.3.3` since my project also updated to Next.js 13. After that, tried downgrade `@prismic/next` back to `0.1.2` also still got the error.

Tried to exactly match the version used in the given crash course , also still got the error. Tried to do clean install, delete .next and node_modules folder, also didn’t work.

When creating new slice, the slice folder, model.json and mocks.json is created, but no index.tsx file is created and the prismicio-types.d.ts is not updated with the new slice.

When tried to re-initialize the folder using npx @slicemachine/init@latest also got similar error, “Error in @slicemachine/adapter-next during project:init


Package Detail

package.json:

{
	"name": "next-prismic-boilerplate",
	"version": "0.1.0",
	"private": true,
	"scripts": {
		"dev": "concurrently \"npm:next:dev\" \"npm:slicemachine\" --names \"next,slicemachine\" --prefix-colors blue,magenta",
		"next:dev": "next",
		"build": "next build",
		"start": "next start",
		"lint": "next lint",
		"slicemachine": "start-slicemachine",
		"pretty": "prettier --write \"./**/*.{ts,tsx}\""
	},
	"dependencies": {
		"@headlessui/react": "^1.7.15",
		"@prismicio/client": "^7.0.0",
		"@prismicio/next": "^1.3.3",
		"@prismicio/react": "^2.3.0",
		"@prismicio/slice-simulator-react": "^0.2.2",
		"@reecem/prismic-sitemap": "^0.4.3",
		"@sendgrid/mail": "^7.7.0",
		"@typescript-eslint/eslint-plugin": "^5.22.0",
		"@typescript-eslint/parser": "^5.22.0",
		"clsx": "^1.2.1",
		"next": "^13.4.9",
		"nextjs-progressbar": "^0.0.14",
		"react": "^18.2.0",
		"react-dom": "^18.2.0",
		"react-icons": "^4.3.1"
	},
	"devDependencies": {
		"@slicemachine/adapter-next": "^0.3.3",
		"@types/node": "^17.0.31",
		"@types/react": "^18.0.9",
		"@types/react-dom": "^18.0.3",
		"autoprefixer": "^10.4.7",
		"concurrently": "^7.3.0",
		"eslint": "8.15.0",
		"eslint-config-next": "^13.4.9",
		"postcss": "^8.4.13",
		"postcss-import": "^15.0.0",
		"prettier": "^3.0.0",
		"prettier-plugin-tailwindcss": "^0.4.0",
		"slice-machine-ui": "^1.5.1",
		"tailwindcss": "^3.0.24",
		"typescript": "^4.6.4"
	}
}

What is expected?

  • Able to create new slice
  • Able to edit existing slice

What is actually happening?

  • Unable to create new slice, got “Internal Error: Slice not created error”
  • Unable to edit existing slice, got “@slicemachine/adapter-nextduringslice:update` hook: Cannot read properties of undefined (reading ‘startsWith’)”

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Reactions: 1
  • Comments: 27 (4 by maintainers)

Commits related to this issue

Most upvoted comments

A fix was released in v1.19.0. I’m closing the issue now. Thanks again all of you for submitting the issue and investigating on the problem. That was really helpful.

Feel free to reopen if this happens again in a different context.

All the best.

Hi @aldoarya and @eraykeskinmac,

Thank you for discovering the Prettier + Tailwind cause. @slicemachine/adapter-next runs generated files (including prismicio-types.d.ts) through Prettier to match your project’s code style. prettier-plugin-tailwindcss may be erroring on some part of the code, though it’s not obvious where.

Could you do the following to help us debug the issue?

  1. Disable formatting in generated files with the following option in slicemachine.config.json:
      {
        "repositoryName": "example-prismic-repo",
        "libraries": ["./slices"],
    +   "adapter": {
    +     "resolve": "@slicemachine/adapter-next",
    +     "options": {
    +       "format": false
    +     }
    +   },
        "localSliceSimulatorURL": "http://localhost:8000/slice-simulator"
      }
    
  2. Make a change to a Slice or custom type and save. Your prismicio-types.d.ts file should be updated without an error.
  3. Copy and paste or attach the prismicio-types.d.ts file here.

With that output, we can understand where the bug is happening. Thank you!

Hey there, we’re hopefully fixing this in #1183, it’ll be out soon!

Workaround until it’s fixed:

  1. remove the plugins line from your prettier config
  2. run slice machine
  3. add plugins line back to prettier config

Error should be gone until the next time you run slice machine.

Hello Thanks for the information. Disabling adapter formatting on the slicemachine.config.json does solve the issue. I am able to sucessfully create a new slice and update it.

Here is my prismic-types.d.ts after disabling the formatting.

// Code generated by Slice Machine. DO NOT EDIT.

import type * as prismic from "@prismicio/client";

type Simplify<T> = {
    [KeyType in keyof T]: T[KeyType];
};
/** Content for Layouts documents */
interface LayoutsDocumentData {
    /**
     * Slice Zone field in *Layouts*
     *
     * - **Field Type**: Slice Zone
     * - **Placeholder**: *None*
     * - **API ID Path**: layouts.slices[]
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/slices
     *
     */
    slices: prismic.SliceZone<LayoutsDocumentDataSlicesSlice>;
}
/**
 * Slice for *Layouts → Slice Zone*
 *
 */
type LayoutsDocumentDataSlicesSlice = FooterMainSlice | NavbarMainSlice | ChildrenSlice;
/**
 * Layouts document from Prismic
 *
 * - **API ID**: `layouts`
 * - **Repeatable**: `true`
 * - **Documentation**: https://prismic.io/docs/core-concepts/custom-types
 *
 * @typeParam Lang - Language API ID of the document.
 */
export type LayoutsDocument<Lang extends string = string> = prismic.PrismicDocumentWithUID<Simplify<LayoutsDocumentData>, "layouts", Lang>;
/** Content for Menu Content documents */
interface MenuContentDocumentData {
    /**
     * Menus field in *Menu Content*
     *
     * - **Field Type**: Group
     * - **Placeholder**: *None*
     * - **API ID Path**: menu_content.menus[]
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/group
     *
     */
    menus: prismic.GroupField<Simplify<MenuContentDocumentDataMenusItem>>;
    /**
     * Heading field in *Menu Content*
     *
     * - **Field Type**: Title
     * - **Placeholder**: *None*
     * - **API ID Path**: menu_content.heading
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    heading: prismic.TitleField;
    /**
     * Description field in *Menu Content*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: menu_content.description
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    description: prismic.RichTextField;
    /**
     * Button Text field in *Menu Content*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: menu_content.button_text
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    button_text: prismic.KeyTextField;
    /**
     * Button Link field in *Menu Content*
     *
     * - **Field Type**: Link
     * - **Placeholder**: *None*
     * - **API ID Path**: menu_content.button_link
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/link-content-relationship
     *
     */
    button_link: prismic.LinkField;
}
/**
 * Item in Menu Content → Menus
 *
 */
export interface MenuContentDocumentDataMenusItem {
    /**
     * Icon field in *Menu Content → Menus*
     *
     * - **Field Type**: Image
     * - **Placeholder**: *None*
     * - **API ID Path**: menu_content.menus[].icon
     * - **Documentation**: https://prismic.io/docs/core-concepts/image
     *
     */
    icon: prismic.ImageField<never>;
    /**
     * Heading field in *Menu Content → Menus*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: menu_content.menus[].heading
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    heading: prismic.KeyTextField;
    /**
     * Description field in *Menu Content → Menus*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: menu_content.menus[].description
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    description: prismic.KeyTextField;
    /**
     * CTA Text field in *Menu Content → Menus*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: menu_content.menus[].cta_text
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    cta_text: prismic.KeyTextField;
    /**
     * CTA Link field in *Menu Content → Menus*
     *
     * - **Field Type**: Link
     * - **Placeholder**: *None*
     * - **API ID Path**: menu_content.menus[].cta_link
     * - **Documentation**: https://prismic.io/docs/core-concepts/link-content-relationship
     *
     */
    cta_link: prismic.LinkField;
}
/**
 * Menu Content document from Prismic
 *
 * - **API ID**: `menu_content`
 * - **Repeatable**: `true`
 * - **Documentation**: https://prismic.io/docs/core-concepts/custom-types
 *
 * @typeParam Lang - Language API ID of the document.
 */
export type MenuContentDocument<Lang extends string = string> = prismic.PrismicDocumentWithUID<Simplify<MenuContentDocumentData>, "menu_content", Lang>;
/** Content for Pages documents */
interface PagesDocumentData {
    /**
     * Html Title field in *Pages*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: pages.htmlTitle
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    htmlTitle: prismic.KeyTextField;
    /**
     * Route field in *Pages*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: pages.route
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    route: prismic.KeyTextField;
    /**
     * Layout field in *Pages*
     *
     * - **Field Type**: Content Relationship
     * - **Placeholder**: *None*
     * - **API ID Path**: pages.layout
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/link-content-relationship
     *
     */
    layout: prismic.ContentRelationshipField<"layouts">;
    /**
     * Slice Zone field in *Pages*
     *
     * - **Field Type**: Slice Zone
     * - **Placeholder**: *None*
     * - **API ID Path**: pages.slices[]
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/slices
     *
     */
    slices: prismic.SliceZone<PagesDocumentDataSlicesSlice>;
}
/**
 * Slice for *Pages → Slice Zone*
 *
 */
type PagesDocumentDataSlicesSlice = ImageSlice | ParagraphSlice | ContactFormSlice | PricingHeroSlice | HeroSlice | CardGridSlice;
/**
 * Pages document from Prismic
 *
 * - **API ID**: `pages`
 * - **Repeatable**: `true`
 * - **Documentation**: https://prismic.io/docs/core-concepts/custom-types
 *
 * @typeParam Lang - Language API ID of the document.
 */
export type PagesDocument<Lang extends string = string> = prismic.PrismicDocumentWithUID<Simplify<PagesDocumentData>, "pages", Lang>;
/** Content for Redirect Link documents */
interface RedirectLinkDocumentData {
    /**
     * route field in *Redirect Link*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: redirect_link.route
     * - **Tab**: Main
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    route: prismic.KeyTextField;
}
/**
 * Redirect Link document from Prismic
 *
 * - **API ID**: `redirect_link`
 * - **Repeatable**: `true`
 * - **Documentation**: https://prismic.io/docs/core-concepts/custom-types
 *
 * @typeParam Lang - Language API ID of the document.
 */
export type RedirectLinkDocument<Lang extends string = string> = prismic.PrismicDocumentWithUID<Simplify<RedirectLinkDocumentData>, "redirect_link", Lang>;
export type AllDocumentTypes = LayoutsDocument | MenuContentDocument | PagesDocument | RedirectLinkDocument;
/**
 * Primary content in CardGrid → Primary
 *
 */
interface CardGridSliceDefaultPrimary {
    /**
     * Header field in *CardGrid → Primary*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: card_grid.primary.header
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    header: prismic.KeyTextField;
    /**
     * Description field in *CardGrid → Primary*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: card_grid.primary.description
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    description: prismic.RichTextField;
}
/**
 * Item in CardGrid → Items
 *
 */
export interface CardGridSliceDefaultItem {
    /**
     * Card Icon field in *CardGrid → Items*
     *
     * - **Field Type**: Image
     * - **Placeholder**: *None*
     * - **API ID Path**: card_grid.items[].card_icon
     * - **Documentation**: https://prismic.io/docs/core-concepts/image
     *
     */
    card_icon: prismic.ImageField<never>;
    /**
     * Card Title field in *CardGrid → Items*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: card_grid.items[].card_title
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    card_title: prismic.KeyTextField;
    /**
     * Card Description field in *CardGrid → Items*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: card_grid.items[].card_description
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    card_description: prismic.RichTextField;
}
/**
 * Default variation for CardGrid Slice
 *
 * - **API ID**: `default`
 * - **Description**: `Default`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type CardGridSliceDefault = prismic.SharedSliceVariation<"default", Simplify<CardGridSliceDefaultPrimary>, Simplify<CardGridSliceDefaultItem>>;
/**
 * Slice variation for *CardGrid*
 *
 */
type CardGridSliceVariation = CardGridSliceDefault;
/**
 * CardGrid Shared Slice
 *
 * - **API ID**: `card_grid`
 * - **Description**: `CardGrid`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type CardGridSlice = prismic.SharedSlice<"card_grid", CardGridSliceVariation>;
/**
 * Default variation for Children Slice
 *
 * - **API ID**: `default`
 * - **Description**: `Children`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type ChildrenSliceDefault = prismic.SharedSliceVariation<"default", Record<string, never>, never>;
/**
 * Slice variation for *Children*
 *
 */
type ChildrenSliceVariation = ChildrenSliceDefault;
/**
 * Children Shared Slice
 *
 * - **API ID**: `children`
 * - **Description**: `Children`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type ChildrenSlice = prismic.SharedSlice<"children", ChildrenSliceVariation>;
/**
 * Primary content in ContactForm → Primary
 *
 */
interface ContactFormSliceDefaultPrimary {
    /**
     * Title field in *ContactForm → Primary*
     *
     * - **Field Type**: Title
     * - **Placeholder**: *None*
     * - **API ID Path**: contact_form.primary.title
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    title: prismic.TitleField;
    /**
     * Description field in *ContactForm → Primary*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: contact_form.primary.description
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    description: prismic.RichTextField;
    /**
     * Email field in *ContactForm → Primary*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: contact_form.primary.email
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    email: prismic.KeyTextField;
    /**
     * Phone field in *ContactForm → Primary*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: contact_form.primary.phone
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    phone: prismic.KeyTextField;
    /**
     * Address field in *ContactForm → Primary*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: contact_form.primary.address
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    address: prismic.KeyTextField;
}
/**
 * Item in ContactForm → Items
 *
 */
export interface ContactFormSliceDefaultItem {
    /**
     * Type field in *ContactForm → Items*
     *
     * - **Field Type**: Select
     * - **Placeholder**: *None*
     * - **Default Value**: input
     * - **API ID Path**: contact_form.items[].type
     * - **Documentation**: https://prismic.io/docs/core-concepts/select
     *
     */
    type: prismic.SelectField<"input" | "textarea" | "dropdown", "filled">;
    /**
     * Name field in *ContactForm → Items*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: contact_form.items[].name
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    name: prismic.KeyTextField;
    /**
     * Label field in *ContactForm → Items*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: contact_form.items[].label
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    label: prismic.KeyTextField;
    /**
     * Placeholder field in *ContactForm → Items*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: contact_form.items[].placeholder
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    placeholder: prismic.KeyTextField;
}
/**
 * Default variation for ContactForm Slice
 *
 * - **API ID**: `default`
 * - **Description**: `Default`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type ContactFormSliceDefault = prismic.SharedSliceVariation<"default", Simplify<ContactFormSliceDefaultPrimary>, Simplify<ContactFormSliceDefaultItem>>;
/**
 * Slice variation for *ContactForm*
 *
 */
type ContactFormSliceVariation = ContactFormSliceDefault;
/**
 * ContactForm Shared Slice
 *
 * - **API ID**: `contact_form`
 * - **Description**: `ContactForm`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type ContactFormSlice = prismic.SharedSlice<"contact_form", ContactFormSliceVariation>;
/**
 * Primary content in FaqAccordion → Primary
 *
 */
interface FaqAccordionSliceDefaultPrimary {
    /**
     * Title field in *FaqAccordion → Primary*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: faq_accordion.primary.title
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    title: prismic.RichTextField;
}
/**
 * Item in FaqAccordion → Items
 *
 */
export interface FaqAccordionSliceDefaultItem {
    /**
     * Title field in *FaqAccordion → Items*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: faq_accordion.items[].title
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    title: prismic.RichTextField;
    /**
     * Description field in *FaqAccordion → Items*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: faq_accordion.items[].description
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    description: prismic.RichTextField;
}
/**
 * Default variation for FaqAccordion Slice
 *
 * - **API ID**: `default`
 * - **Description**: `Default`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type FaqAccordionSliceDefault = prismic.SharedSliceVariation<"default", Simplify<FaqAccordionSliceDefaultPrimary>, Simplify<FaqAccordionSliceDefaultItem>>;
/**
 * Slice variation for *FaqAccordion*
 *
 */
type FaqAccordionSliceVariation = FaqAccordionSliceDefault;
/**
 * FaqAccordion Shared Slice
 *
 * - **API ID**: `faq_accordion`
 * - **Description**: `FaqAccordion`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type FaqAccordionSlice = prismic.SharedSlice<"faq_accordion", FaqAccordionSliceVariation>;
/**
 * Item in FeatureList → Items
 *
 */
export interface FeatureListSliceDefaultItem {
    /**
     * Title field in *FeatureList → Items*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: feature_list.items[].title
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    title: prismic.RichTextField;
    /**
     * Description field in *FeatureList → Items*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: feature_list.items[].description
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    description: prismic.RichTextField;
}
/**
 * Default variation for FeatureList Slice
 *
 * - **API ID**: `default`
 * - **Description**: `Default`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type FeatureListSliceDefault = prismic.SharedSliceVariation<"default", Record<string, never>, Simplify<FeatureListSliceDefaultItem>>;
/**
 * Slice variation for *FeatureList*
 *
 */
type FeatureListSliceVariation = FeatureListSliceDefault;
/**
 * FeatureList Shared Slice
 *
 * - **API ID**: `feature_list`
 * - **Description**: `FeatureList`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type FeatureListSlice = prismic.SharedSlice<"feature_list", FeatureListSliceVariation>;
/**
 * Primary content in FooterMain → Primary
 *
 */
interface FooterMainSliceDefaultPrimary {
    /**
     * Logo field in *FooterMain → Primary*
     *
     * - **Field Type**: Image
     * - **Placeholder**: *None*
     * - **API ID Path**: footer_main.primary.logo
     * - **Documentation**: https://prismic.io/docs/core-concepts/image
     *
     */
    logo: prismic.ImageField<never>;
}
/**
 * Item in FooterMain → Items
 *
 */
export interface FooterMainSliceDefaultItem {
    /**
     * Text field in *FooterMain → Items*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: footer_main.items[].text
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    text: prismic.KeyTextField;
    /**
     * link field in *FooterMain → Items*
     *
     * - **Field Type**: Link
     * - **Placeholder**: *None*
     * - **API ID Path**: footer_main.items[].link
     * - **Documentation**: https://prismic.io/docs/core-concepts/link-content-relationship
     *
     */
    link: prismic.LinkField;
}
/**
 * Default variation for FooterMain Slice
 *
 * - **API ID**: `default`
 * - **Description**: `FooterMain`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type FooterMainSliceDefault = prismic.SharedSliceVariation<"default", Simplify<FooterMainSliceDefaultPrimary>, Simplify<FooterMainSliceDefaultItem>>;
/**
 * Slice variation for *FooterMain*
 *
 */
type FooterMainSliceVariation = FooterMainSliceDefault;
/**
 * FooterMain Shared Slice
 *
 * - **API ID**: `footer_main`
 * - **Description**: `FooterMain`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type FooterMainSlice = prismic.SharedSlice<"footer_main", FooterMainSliceVariation>;
/**
 * Primary content in Hero → Primary
 *
 */
interface HeroSliceDefaultPrimary {
    /**
     * Subtitle field in *Hero → Primary*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: hero.primary.subtitle
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    subtitle: prismic.KeyTextField;
    /**
     * Header field in *Hero → Primary*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: hero.primary.header
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    header: prismic.KeyTextField;
    /**
     * Description field in *Hero → Primary*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: hero.primary.description
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    description: prismic.RichTextField;
    /**
     * Background Image field in *Hero → Primary*
     *
     * - **Field Type**: Image
     * - **Placeholder**: *None*
     * - **API ID Path**: hero.primary.background_image
     * - **Documentation**: https://prismic.io/docs/core-concepts/image
     *
     */
    background_image: prismic.ImageField<never>;
    /**
     * Hero Image field in *Hero → Primary*
     *
     * - **Field Type**: Image
     * - **Placeholder**: *None*
     * - **API ID Path**: hero.primary.hero_image
     * - **Documentation**: https://prismic.io/docs/core-concepts/image
     *
     */
    hero_image: prismic.ImageField<never>;
    /**
     * Theme field in *Hero → Primary*
     *
     * - **Field Type**: Select
     * - **Placeholder**: *None*
     * - **API ID Path**: hero.primary.theme
     * - **Documentation**: https://prismic.io/docs/core-concepts/select
     *
     */
    theme: prismic.SelectField<"Fade Green" | "Green">;
    /**
     * Padding field in *Hero → Primary*
     *
     * - **Field Type**: Select
     * - **Placeholder**: *None*
     * - **API ID Path**: hero.primary.padding
     * - **Documentation**: https://prismic.io/docs/core-concepts/select
     *
     */
    padding: prismic.SelectField<"top-none" | "bottom-none" | "y-none">;
}
/**
 * Item in Hero → Items
 *
 */
export interface HeroSliceDefaultItem {
    /**
     * Button Text field in *Hero → Items*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: hero.items[].button_text
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    button_text: prismic.KeyTextField;
    /**
     * Button Link field in *Hero → Items*
     *
     * - **Field Type**: Link
     * - **Placeholder**: *None*
     * - **API ID Path**: hero.items[].button_link
     * - **Documentation**: https://prismic.io/docs/core-concepts/link-content-relationship
     *
     */
    button_link: prismic.LinkField;
    /**
     * Button Type field in *Hero → Items*
     *
     * - **Field Type**: Select
     * - **Placeholder**: *None*
     * - **API ID Path**: hero.items[].button_type
     * - **Documentation**: https://prismic.io/docs/core-concepts/select
     *
     */
    button_type: prismic.SelectField<"Outlined" | "Filled">;
}
/**
 * Default variation for Hero Slice
 *
 * - **API ID**: `default`
 * - **Description**: `Default`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type HeroSliceDefault = prismic.SharedSliceVariation<"default", Simplify<HeroSliceDefaultPrimary>, Simplify<HeroSliceDefaultItem>>;
/**
 * Slice variation for *Hero*
 *
 */
type HeroSliceVariation = HeroSliceDefault;
/**
 * Hero Shared Slice
 *
 * - **API ID**: `hero`
 * - **Description**: `Hero`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type HeroSlice = prismic.SharedSlice<"hero", HeroSliceVariation>;
/**
 * Primary content in Image → Primary
 *
 */
interface ImageSliceDefaultPrimary {
    /**
     * Title field in *Image → Primary*
     *
     * - **Field Type**: Title
     * - **Placeholder**: This is where it all begins...
     * - **API ID Path**: image.primary.title
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    title: prismic.TitleField;
    /**
     * Image field in *Image → Primary*
     *
     * - **Field Type**: Image
     * - **Placeholder**: *None*
     * - **API ID Path**: image.primary.image
     * - **Documentation**: https://prismic.io/docs/core-concepts/image
     *
     */
    image: prismic.ImageField<never>;
}
/**
 * Default variation for Image Slice
 *
 * - **API ID**: `default`
 * - **Description**: `Image`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type ImageSliceDefault = prismic.SharedSliceVariation<"default", Simplify<ImageSliceDefaultPrimary>, never>;
/**
 * Slice variation for *Image*
 *
 */
type ImageSliceVariation = ImageSliceDefault;
/**
 * Image Shared Slice
 *
 * - **API ID**: `image`
 * - **Description**: `Image`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type ImageSlice = prismic.SharedSlice<"image", ImageSliceVariation>;
/**
 * Primary content in NavbarMain → Primary
 *
 */
interface NavbarMainSliceDefaultPrimary {
    /**
     * Logo field in *NavbarMain → Primary*
     *
     * - **Field Type**: Image
     * - **Placeholder**: *None*
     * - **API ID Path**: navbar_main.primary.logo
     * - **Documentation**: https://prismic.io/docs/core-concepts/image
     *
     */
    logo: prismic.ImageField<never>;
}
/**
 * Item in NavbarMain → Items
 *
 */
export interface NavbarMainSliceDefaultItem {
    /**
     * type field in *NavbarMain → Items*
     *
     * - **Field Type**: Select
     * - **Placeholder**: *None*
     * - **Default Value**: nav-link
     * - **API ID Path**: navbar_main.items[].type
     * - **Documentation**: https://prismic.io/docs/core-concepts/select
     *
     */
    type: prismic.SelectField<"nav-link" | "mega-menu", "filled">;
    /**
     * text field in *NavbarMain → Items*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: navbar_main.items[].text
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    text: prismic.KeyTextField;
    /**
     * link field in *NavbarMain → Items*
     *
     * - **Field Type**: Link
     * - **Placeholder**: *None*
     * - **API ID Path**: navbar_main.items[].link
     * - **Documentation**: https://prismic.io/docs/core-concepts/link-content-relationship
     *
     */
    link: prismic.LinkField;
    /**
     * Menu content field in *NavbarMain → Items*
     *
     * - **Field Type**: Content Relationship
     * - **Placeholder**: *None*
     * - **API ID Path**: navbar_main.items[].menu_content
     * - **Documentation**: https://prismic.io/docs/core-concepts/link-content-relationship
     *
     */
    menu_content: prismic.ContentRelationshipField<"menu_content">;
}
/**
 * Default variation for NavbarMain Slice
 *
 * - **API ID**: `default`
 * - **Description**: `NavbarMain`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type NavbarMainSliceDefault = prismic.SharedSliceVariation<"default", Simplify<NavbarMainSliceDefaultPrimary>, Simplify<NavbarMainSliceDefaultItem>>;
/**
 * Slice variation for *NavbarMain*
 *
 */
type NavbarMainSliceVariation = NavbarMainSliceDefault;
/**
 * NavbarMain Shared Slice
 *
 * - **API ID**: `navbar_main`
 * - **Description**: `NavbarMain`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type NavbarMainSlice = prismic.SharedSlice<"navbar_main", NavbarMainSliceVariation>;
/**
 * Primary content in Paragraph → Primary
 *
 */
interface ParagraphSliceDefaultPrimary {
    /**
     * Title field in *Paragraph → Primary*
     *
     * - **Field Type**: Title
     * - **Placeholder**: This is where it all begins...
     * - **API ID Path**: paragraph.primary.title
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    title: prismic.TitleField;
    /**
     * Description field in *Paragraph → Primary*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: A nice description of your feature
     * - **API ID Path**: paragraph.primary.description
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    description: prismic.RichTextField;
}
/**
 * Default variation for Paragraph Slice
 *
 * - **API ID**: `default`
 * - **Description**: `Paragraph`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type ParagraphSliceDefault = prismic.SharedSliceVariation<"default", Simplify<ParagraphSliceDefaultPrimary>, never>;
/**
 * Slice variation for *Paragraph*
 *
 */
type ParagraphSliceVariation = ParagraphSliceDefault;
/**
 * Paragraph Shared Slice
 *
 * - **API ID**: `paragraph`
 * - **Description**: `Paragraph`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type ParagraphSlice = prismic.SharedSlice<"paragraph", ParagraphSliceVariation>;
/**
 * Primary content in PricingHero → Primary
 *
 */
interface PricingHeroSliceDefaultPrimary {
    /**
     * Title field in *PricingHero → Primary*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: pricing_hero.primary.title
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    title: prismic.RichTextField;
}
/**
 * Item in PricingHero → Items
 *
 */
export interface PricingHeroSliceDefaultItem {
    /**
     * Name field in *PricingHero → Items*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: pricing_hero.items[].name
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    name: prismic.RichTextField;
    /**
     * Description field in *PricingHero → Items*
     *
     * - **Field Type**: Rich Text
     * - **Placeholder**: *None*
     * - **API ID Path**: pricing_hero.items[].description
     * - **Documentation**: https://prismic.io/docs/core-concepts/rich-text-title
     *
     */
    description: prismic.RichTextField;
    /**
     * Price field in *PricingHero → Items*
     *
     * - **Field Type**: Number
     * - **Placeholder**: *None*
     * - **API ID Path**: pricing_hero.items[].price
     * - **Documentation**: https://prismic.io/docs/core-concepts/number
     *
     */
    price: prismic.NumberField;
}
/**
 * Default variation for PricingHero Slice
 *
 * - **API ID**: `default`
 * - **Description**: `Default`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type PricingHeroSliceDefault = prismic.SharedSliceVariation<"default", Simplify<PricingHeroSliceDefaultPrimary>, Simplify<PricingHeroSliceDefaultItem>>;
/**
 * Slice variation for *PricingHero*
 *
 */
type PricingHeroSliceVariation = PricingHeroSliceDefault;
/**
 * PricingHero Shared Slice
 *
 * - **API ID**: `pricing_hero`
 * - **Description**: `PricingHero`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type PricingHeroSlice = prismic.SharedSlice<"pricing_hero", PricingHeroSliceVariation>;
/**
 * Primary content in TestDisableFormatOnSlicemachine → Primary
 *
 */
interface TestDisableFormatOnSlicemachineSliceDefaultPrimary {
    /**
     * Test Edit Slice field in *TestDisableFormatOnSlicemachine → Primary*
     *
     * - **Field Type**: Text
     * - **Placeholder**: *None*
     * - **API ID Path**: test_disable_format_on_slicemachine.primary.test_edit_slice
     * - **Documentation**: https://prismic.io/docs/core-concepts/key-text
     *
     */
    test_edit_slice: prismic.KeyTextField;
}
/**
 * Default variation for TestDisableFormatOnSlicemachine Slice
 *
 * - **API ID**: `default`
 * - **Description**: `Default`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type TestDisableFormatOnSlicemachineSliceDefault = prismic.SharedSliceVariation<"default", Simplify<TestDisableFormatOnSlicemachineSliceDefaultPrimary>, never>;
/**
 * Slice variation for *TestDisableFormatOnSlicemachine*
 *
 */
type TestDisableFormatOnSlicemachineSliceVariation = TestDisableFormatOnSlicemachineSliceDefault;
/**
 * TestDisableFormatOnSlicemachine Shared Slice
 *
 * - **API ID**: `test_disable_format_on_slicemachine`
 * - **Description**: `TestDisableFormatOnSlicemachine`
 * - **Documentation**: https://prismic.io/docs/core-concepts/reusing-slices
 *
 */
export type TestDisableFormatOnSlicemachineSlice = prismic.SharedSlice<"test_disable_format_on_slicemachine", TestDisableFormatOnSlicemachineSliceVariation>;
declare module "@prismicio/client" {
    interface CreateClient {
        (repositoryNameOrEndpoint: string, options?: prismic.ClientConfig): prismic.Client<AllDocumentTypes>;
    }
    namespace Content {
        export type { LayoutsDocumentData, LayoutsDocumentDataSlicesSlice, LayoutsDocument, MenuContentDocumentData, MenuContentDocumentDataMenusItem, MenuContentDocument, PagesDocumentData, PagesDocumentDataSlicesSlice, PagesDocument, RedirectLinkDocumentData, RedirectLinkDocument, AllDocumentTypes, CardGridSliceDefaultPrimary, CardGridSliceDefaultItem, CardGridSliceDefault, CardGridSliceVariation, CardGridSlice, ChildrenSliceDefault, ChildrenSliceVariation, ChildrenSlice, ContactFormSliceDefaultPrimary, ContactFormSliceDefaultItem, ContactFormSliceDefault, ContactFormSliceVariation, ContactFormSlice, FaqAccordionSliceDefaultPrimary, FaqAccordionSliceDefaultItem, FaqAccordionSliceDefault, FaqAccordionSliceVariation, FaqAccordionSlice, FeatureListSliceDefaultItem, FeatureListSliceDefault, FeatureListSliceVariation, FeatureListSlice, FooterMainSliceDefaultPrimary, FooterMainSliceDefaultItem, FooterMainSliceDefault, FooterMainSliceVariation, FooterMainSlice, HeroSliceDefaultPrimary, HeroSliceDefaultItem, HeroSliceDefault, HeroSliceVariation, HeroSlice, ImageSliceDefaultPrimary, ImageSliceDefault, ImageSliceVariation, ImageSlice, NavbarMainSliceDefaultPrimary, NavbarMainSliceDefaultItem, NavbarMainSliceDefault, NavbarMainSliceVariation, NavbarMainSlice, ParagraphSliceDefaultPrimary, ParagraphSliceDefault, ParagraphSliceVariation, ParagraphSlice, PricingHeroSliceDefaultPrimary, PricingHeroSliceDefaultItem, PricingHeroSliceDefault, PricingHeroSliceVariation, PricingHeroSlice, TestDisableFormatOnSlicemachineSliceDefaultPrimary, TestDisableFormatOnSlicemachineSliceDefault, TestDisableFormatOnSlicemachineSliceVariation, TestDisableFormatOnSlicemachineSlice };
    }
}

And here is my package.json

{
  "name": "testing-prismic-prettier",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "concurrently \"npm:next:dev\" \"npm:slicemachine\" --names \"next,slicemachine\" --prefix-colors blue,magenta",
    "next:dev": "next",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "slicemachine": "start-slicemachine",
    "pretty": "prettier --write \"./**/*.{ts,tsx}\""
  },
  "dependencies": {
    "@headlessui/react": "^1.7.15",
    "@prismicio/client": "^7.1.0",
    "@prismicio/next": "^1.3.3",
    "@prismicio/react": "^2.7.1",
    "@reecem/prismic-sitemap": "^0.5.3",
    "@sendgrid/mail": "^7.7.0",
    "@types/node": "20.4.2",
    "@types/react": "18.2.15",
    "@types/react-dom": "18.2.7",
    "autoprefixer": "10.4.14",
    "clsx": "^1.2.1",
    "eslint": "8.44.0",
    "eslint-config-next": "13.4.9",
    "next": "13.4.9",
    "nextjs-progressbar": "^0.0.16",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "react-icons": "^4.10.1",
    "tailwindcss": "3.3.3",
    "typescript": "5.1.6"
  },
  "devDependencies": {
    "@slicemachine/adapter-next": "^0.3.4",
    "concurrently": "^8.2.0",
    "postcss": "^8.4.26",
    "postcss-import": "^15.1.0",
    "prettier": "^3.0.0",
    "prettier-plugin-tailwindcss": "^0.4.1",
    "slice-machine-ui": "^1.5.1"
  }
}

I just spend few good hours searching for the cause of this. I rebuild my project from ground up by creating Next,js app --> installing Slicemachine --> migrating folder-by-folder and test to create new slice every one or two folders.

Turns out the root cause was the prettier-plugin-tailwindcss. I added it to my .prettierrc in the “plugins” array and immediately the error happen. Cannot create slice, update, etc. Removing this plugin from the .prettierrc and dev dependency solved this issue.

It kinda weird to me, how a Prettier plugin could cause this. Hope this helps anyone who face the same issue.