1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[ReactJS]

Discussão em 'Mobile' iniciado por Stack, Abril 22, 2021.

  1. Stack

    Stack Membro Participativo


    ~/Documents/Programming/Dunna/client (main) $ yarn build yarn run v1.22.10 $ next build Browserslist: caniuse-lite is outdated. Please run: npx browserslist@latest --update-db (node:13948) ExperimentalWarning: The fs.promises API is experimental Loaded env from C:\Users\reish\Documents\Programming\Dunna\client.env.local info - Using external babel configuration from C:\Users\reish\Documents\Programming\Dunna\client\babel.config.js info - Creating an optimized production build info - Compiled successfully info - Collecting page data
    [== ] info - Generating static pages (0/15)(node:14416) ExperimentalWarning: The fs.promises API is experimental (node:21788) ExperimentalWarning: The fs.promises API is experimental [ ===] info - Generating static pages (0/15)(node:23920) ExperimentalWarning: The fs.promises API is experimental (node:21516) ExperimentalWarning: The fs.promises API is experimental (node:19580) ExperimentalWarning: The fs.promises API is experimental (node:23568) ExperimentalWarning: The fs.promises API is experimental (node:24720) ExperimentalWarning: The fs.promises API is experimental (node:14684) ExperimentalWarning: The fs.promises API is experimental (node:12000) ExperimentalWarning: The fs.promises API is experimental (node:8452) ExperimentalWarning: The fs.promises API is experimental (node:17956) ExperimentalWarning: The fs.promises API is experimental (node:13536) ExperimentalWarning: The fs.promises API is experimental (node:26760) ExperimentalWarning: The fs.promises API is experimental [ ==] info - Generating static pages (0/15)(node:2564) ExperimentalWarning: The fs.promises API is experimental
    (node:8940) ExperimentalWarning: The fs.promises API is experimental [ =] info - Generating static pages (0/15) Error occurred prerendering page "/shop/[id]". Read more: https://err.sh/next.js/prerender-error TypeError: Cannot read property 'images' of undefined at _id_product (C:\Users\reish\Documents\Programming\Dunna\client.next\server\pages\shop[id].js:329:51) at d (C:\Users\reish\Documents\Programming\Dunna\client\node_modules\react-dom\cjs\react-dom-server.node.production.min.js:33:498) at bb (C:\Users\reish\Documents\Programming\Dunna\client\node_modules\react-dom\cjs\react-dom-server.node.production.min.js:36:16) at a.b.render (C:\Users\reish\Documents\Programming\Dunna\client\node_modules\react-dom\cjs\react-dom-server.node.production.min.js:42:43) at a.b.read (C:\Users\reish\Documents\Programming\Dunna\client\node_modules\react-dom\cjs\react-dom-server.node.production.min.js:41:83) at exports.renderToString (C:\Users\reish\Documents\Programming\Dunna\client\node_modules\react-dom\cjs\react-dom-server.node.production.min.js:52:138) at renderPage (C:\Users\reish\Documents\Programming\Dunna\client\node_modules\next\dist\next-server\server\render.js:53:851) at Object.ctx.renderPage (C:\Users\reish\Documents\Programming\Dunna\client.next\server\pages_document.js:811:30)
    at Function.getInitialProps (C:\Users\reish\Documents\Programming\Dunna\client.next\server\pages_document.js:289:19) at Function.getInitialProps (C:\Users\reish\Documents\Programming\Dunna\client.next\server\pages_document.js:815:87) info - Generating static pages (15/15)


    Build error occurred Error: Export encountered errors on following paths: /shop/[id] at exportApp (C:\Users\reish\Documents\Programming\Dunna\client\node_modules\next\dist\export\index.js:30:1103)
    at process._tickCallback (internal/process/next_tick.js:68:7) error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.


    export interface ProductInterface {
    _id: number
    stock_id: number
    name: string
    description: string
    price: number
    stone: string & StonesAndShapes & { value: string; label: string }
    stoneWeigth: number
    diamondWeigth: number
    shape: string & StonesAndShapes & { value: string; label: string }
    images?: ImageProduct[]
    }


    import { GetStaticPaths, GetStaticProps } from 'next'
    import React, { useEffect, useState } from 'react'
    import axios from '../../../axios'

    import {
    Container,
    BigImageContainer,
    SmallImageContainer,
    Img,
    LeftContainer,
    RightContainer,
    Description,
    Price,
    Span,
    Title,
    UppercaseText,
    PriceSpan,
    SelectableImage,
    GridContainer,
    CheckList
    } from '../../styles/pages/shop/product'

    import Head from 'next/head'
    import { ProductInterface } from '../../components/product'
    import { InlineButton } from '../../components/button'
    import { FiCheckCircle } from 'react-icons/fi'

    import ReactImageMagnify from 'react-image-magnify'
    import { checkIfProductIsInCart, useCart } from '../../context/Cart'
    import withCart from '../../HOC/withCart'

    import NoImage from '../../images/noimage.png'
    import { FaWeight } from 'react-icons/fa'
    import { RiVipDiamondLine } from 'react-icons/ri'

    interface Props {
    product: ProductInterface
    }

    const containerVariant = {
    hidden: { opacity: 1, scale: 0 },
    visible: {
    opacity: 1,
    scale: 1,
    transition: {
    delayChildren: 0.3,
    staggerChildren: 0.2
    }
    }
    }

    const BigImageVariant = {
    hidden: { opacity: 0, y: -50 },
    visible: {
    opacity: 1,
    y: 0,
    transition: {
    duration: 0.6
    }
    }
    }

    const SmallImageVariant = {
    hidden: { opacity: 0, y: 50 },
    visible: {
    opacity: 1,
    y: 0,
    transition: {
    duration: 0.8
    }
    }
    }

    const RightContainerVariant = {
    hidden: { opacity: 0, x: -100 },
    visible: {
    opacity: 1,
    x: 0,
    transition: {
    duration: 0.6
    }
    }
    }

    const product: React.FC<Props> = ({ product }) => {
    const [selectedImage, setSelectedImage] = useState(
    product.images.length > 0 ? product.images[0].url : NoImage
    )
    const { cart, addProduct } = useCart()
    const [isActive, setIsActive] = useState(true)

    useEffect(() => {
    if (checkIfProductIsInCart(cart, product)) {
    setIsActive(false)
    } else {
    setIsActive(true)
    }
    }, [cart])

    return (
    <>
    <Head>
    <title>Product - {product.name}</title>
    </Head>
    <Container
    variants={containerVariant}
    initial="hidden"
    animate="visible"
    >
    <GridContainer>
    <LeftContainer>
    <BigImageContainer variants={BigImageVariant}>
    <ReactImageMagnify
    enlargedImagePosition="over"
    largeImage={{
    src: selectedImage,
    width: 2400,
    height: 1800
    }}
    smallImage={{
    alt: 'Image',
    isFluidWidth: true,
    src: selectedImage
    }}
    />
    </BigImageContainer>
    <SmallImageContainer
    variants={SmallImageVariant}
    imagesNumber={
    product.images.length > 0
    ? product.images.length
    : 3
    }
    >
    {product.images.length > 0 ? (
    product.images.map((image, index) => (
    <SelectableImage
    src={image.url}
    alt={'Image ' + index}
    key={image._id}
    onClick={() =>
    setSelectedImage(image.url)
    }
    active={image.url === selectedImage}
    />
    ))
    ) : (
    <SelectableImage
    src={NoImage}
    alt={'noImage'}
    key={'noImage'}
    onClick={() => {}}
    active={true}
    />
    )}
    </SmallImageContainer>
    </LeftContainer>
    <RightContainer variants={RightContainerVariant}>
    <Title>{product.name}</Title>
    <UppercaseText>
    By <Span>Dunna Jewelry</Span>
    </UppercaseText>
    <Price>
    <PriceSpan>R$</PriceSpan>
    {(product.price / 100).toFixed(2)}
    </Price>
    <Description>{product.description}</Description>
    <InlineButton
    onClick={() => addProduct(product)}
    disabled={!isActive}
    >
    {isActive
    ? 'Adicionar ao carrinho'
    : 'Produto adicionado'}
    </InlineButton>
    <CheckList>
    <li>
    <FaWeight />
    <span>
    Peso da Pedra: {product.stoneWeigth} ct
    </span>
    </li>
    {product.diamondWeigth > 0 && (
    <li>
    <RiVipDiamondLine />
    <span>
    Peso da diamante:{' '}
    {product.diamondWeigth} ct
    </span>
    </li>
    )}
    <li>
    <FiCheckCircle />
    <span>Joia feita à mão</span>
    </li>
    <li>
    <FiCheckCircle />
    <span>Design único</span>
    </li>
    <li>
    <FiCheckCircle />
    <span>Lapidada por profissionais</span>
    </li>
    </CheckList>
    </RightContainer>
    </GridContainer>
    </Container>
    </>
    )
    }

    export const getStaticPaths: GetStaticPaths = async ctx => {
    const { data: products } = await axios.get('/products')

    const paths = products.map(product => ({
    params: {
    id: product._id
    }
    }))

    return {
    paths,
    fallback: true
    }
    }

    export const getStaticProps: GetStaticProps = async ctx => {
    const { data: product } = await axios.get('/product/' + ctx.params.id)

    return {
    props: {
    product
    }
    }
    }

    export default product
    // export default withCart(product)

    Continue reading...

Compartilhe esta Página