Giter VIP home page Giter VIP logo

Comments (7)

MartinDawson avatar MartinDawson commented on July 19, 2024 1

(base) martin@martin-HP-EliteBook-840-G5:~/tmp/prernder-test$ yarn rw build
yarn run v1.22.19

@dthyresson Issue was here. Stupidly I was still using v1.22.19 of yarn somehow in my installs and builds. Maybe cause it is bundled with nvm? not sure.

So the error makes sense now, yarn v4 will do different module resolution and that's why it couldn't find that file when on v1.

The following commands fixed it and then rw build with prerender started working:

yarn set version 4.3.0

yarn --version
4.3.0

yarn

Thanks for the help

from redwood.

dthyresson avatar dthyresson commented on July 19, 2024

Hi @MartinDawson and thanks for reporting.

I attempted to reproduce with a very basic pretender case and did not encounter the error you had -- but your setup is likely a different.

Steps:

  1. yarn create redwood-app ~/tmp/prernder-test (TS on)
  2. yarn rw g page BlogPost
  3. Gave it a param and prerender<Route path="/blog-post/{id:Int}" page={BlogPostPage} name="blogPost" prerender />
  4. Added param to page
import { Link, routes } from '@redwoodjs/router'
import { Metadata } from '@redwoodjs/web'

const BlogPostPage = ({ id }: { id: number }) => {
  return (
    <>
      <Metadata title="BlogPost" description="BlogPost page" />

      <h1>BlogPostPage - {id}</h1>
      <p>
        Find me in <code>./web/src/pages/BlogPostPage/BlogPostPage.tsx</code>
      </p>
      <p>
        My default route is named <code>blogPost</code>, link to me with `
        <Link to={routes.blogPost({ id })}>BlogPost</Link>`
      </p>
    </>
  )
}

export default BlogPostPage
  1. added web/src/pages/BlogPostPage/BlogPostPage.routeHooks.js
export function routeParameters() {
  return [{ id: 1 }, { id: 2 }, { id: 3 }]
}\
  1. yarn rw build
✔ Building Web...

Creating 200.html...
Starting prerendering...
✔ Prerendering /blog-post/1 -> web/dist/blog-post/1.html
✔ Prerendering /blog-post/2 -> web/dist/blog-post/2.html
✔ Prerendering /blog-post/3 -> web/dist/blog-post/3.html
  1. yarn rw serve

and when I visit a preredendered page see the 2 id in pre-rendered markup

image

but if I go to a hook not pre-rendered then renders on navigation

image


Not sure I understand how you used:

function getRouteHooksFilePath(routeFilePath) {
  const routeHooksFilePathTs = routeFilePath.replace(
    /\.[jt]sx?$/,
    ".routeHooks.ts"
  );

async function expandRouteParameters(route) {
  const routeHooksFilePath = getRouteHooksFilePath(route.filePath);

Could you provide some examples maybe with what the Page is doing that might cause that error?

I'll also try with a GraphQL query/cell and if that is different will report back,

from redwood.

dthyresson avatar dthyresson commented on July 19, 2024

FYI, tried with a cell and GraphQL query as well and my post and title was pre-rendered:
image

from redwood.

MartinDawson avatar MartinDawson commented on July 19, 2024

@dthyresson I did your exact steps and it fails on yarn rw build.

Here's a repo for you: https://github.com/MartinDawson/prerender-broken

(base) martin@martin-HP-EliteBook-840-G5:~/tmp/prernder-test$ yarn rw build
yarn run v1.22.19
$ /home/martin/tmp/prernder-test/node_modules/.bin/rw build
✔ Generating Prisma Client...
✔ Verifying graphql schema...
✔ Building API...
✔ Building Web...

Creating 200.html...
Starting prerendering...
$ /home/martin/tmp/prernder-test/node_modules/.bin/rw prerender
(node:36786) Warning: Accessing non-existent property 'get' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:36786) Warning: Accessing non-existent property 'has' of module exports inside circular dependency
(node:36786) Warning: Accessing non-existent property 'set' of module exports inside circular dependency
(node:36786) Warning: Accessing non-existent property 'Map' of module exports inside circular dependency
(node:36786) Warning: Accessing non-existent property 'proto' of module exports inside circular dependency
✖ Failed to render "/home/martin/tmp/prernder-test/web/src/pages/BlogPostPage/BlogPostPage.tsx"
◼ Prerendering /blog-post/2 -> web/dist/blog-post/2.html
◼ Prerendering /blog-post/3 -> web/dist/blog-post/3.html

You can use `yarn rw prerender --dry-run` to debug
---------- Error rendering path "/blog-post/1" ----------
TypeError: Cannot read properties of undefined (reading 'createCell')
    at Object.createCell (/home/martin/tmp/prernder-test/node_modules/@redwoodjs/web/dist/index.js:91:24)
    at Object.<anonymous> (/home/martin/tmp/prernder-test/node_modules/@redwoodjs/web/dist/components/createCell.js:8:22)
    at Module._compile (node:internal/modules/cjs/loader:1358:14)
    at Module._compile (/home/martin/tmp/prernder-test/node_modules/pirates/lib/index.js:117:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
    at Object.newLoader [as .js] (/home/martin/tmp/prernder-test/node_modules/pirates/lib/index.js:121:7)
    at Module.load (node:internal/modules/cjs/loader:1208:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1024:12)
    at Module.require (node:internal/modules/cjs/loader:1233:19)
    at require (node:internal/modules/helpers:179:18)
    at Object.<anonymous> (/home/martin/tmp/prernder-test/node_modules/@redwoodjs/web/dist/index.js:136:19)
    at Module._compile (node:internal/modules/cjs/loader:1358:14)
    at Module._compile (/home/martin/tmp/prernder-test/node_modules/pirates/lib/index.js:117:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
    at Object.newLoader [as .js] (/home/martin/tmp/prernder-test/node_modules/pirates/lib/index.js:121:7)
    at Module.load (node:internal/modules/cjs/loader:1208:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1024:12)
    at Module.require (node:internal/modules/cjs/loader:1233:19)
    at require (node:internal/modules/helpers:179:18)
    at Object.<anonymous> (/home/martin/tmp/prernder-test/web/src/App.tsx:1:1)
    at Module._compile (node:internal/modules/cjs/loader:1358:14)
    at Module._compile (/home/martin/tmp/prernder-test/node_modules/pirates/lib/index.js:117:24)
    at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
    at Object.newLoader [as .tsx] (/home/martin/tmp/prernder-test/node_modules/pirates/lib/index.js:121:7)
    at Module.load (node:internal/modules/cjs/loader:1208:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1024:12)
    at Module.require (node:internal/modules/cjs/loader:1233:19)
    at require (node:internal/modules/helpers:179:18)
    at runPrerender (/home/martin/tmp/prernder-test/node_modules/@redwoodjs/prerender/dist/runPrerender.js:256:7)
    at _Task.task [as taskFn] (/home/martin/tmp/prernder-test/node_modules/@redwoodjs/cli/dist/commands/prerenderHandler.js:143:37)
    at _Task.run (/home/martin/tmp/prernder-test/node_modules/listr2/dist/index.cjs:2049:11)

Running diagnostic checks
✔ Diagnostics checks passed 

Tips:
- This could mean that a library you're using does not support SSR.
- Avoid using `window` in the initial render path through your React components without checks. 
  See https://redwoodjs.com/docs/prerender#prerender-utils
- Avoid prerendering Cells with authenticated queries, by conditionally rendering them.
  See https://redwoodjs.com/docs/prerender#common-warnings--errors

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Error: Command failed with exit code 1: yarn rw prerender
    at makeError (/home/martin/tmp/prernder-test/node_modules/execa/lib/error.js:60:11)
    at handlePromise (/home/martin/tmp/prernder-test/node_modules/execa/index.js:118:26)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async triggerPrerender (/home/martin/tmp/prernder-test/node_modules/@redwoodjs/cli/dist/commands/buildHandler.js:183:5)
    at async /home/martin/tmp/prernder-test/node_modules/@redwoodjs/cli/dist/commands/buildHandler.js:195:7
    at async timedTelemetry (/home/martin/tmp/prernder-test/node_modules/@redwoodjs/telemetry/dist/telemetry.js:70:18)
    at async handler (/home/martin/tmp/prernder-test/node_modules/@redwoodjs/cli/dist/commands/buildHandler.js:192:3)
    at async runYargs (/home/martin/tmp/prernder-test/node_modules/@redwoodjs/cli/dist/index.js:151:3)
    at async /home/martin/tmp/prernder-test/node_modules/@redwoodjs/cli/dist/index.js:105:7
    at async main (/home/martin/tmp/prernder-test/node_modules/@redwoodjs/cli/dist/index.js:94:3)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Need help?
 - Not sure about something or need advice? Reach out on our Forum
 - Think you've found a bug? Open an issue on our GitHub
 - Here's your unique error reference to quote: '7e280c65-3253-4ecf-8de4-5614a699df64'
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Versions:

(base) martin@martin-HP-EliteBook-840-G5:~/tmp/prernder-test$ yarn -v
1.22.19
(base) martin@martin-HP-EliteBook-840-G5:~/tmp/prernder-test$ node -v
v20.14.0
(base) martin@martin-HP-EliteBook-840-G5:~/tmp/prernder-test$ npm -v
10.7.0

It looks like exports.createCell = _web.createCell;

createCell is undefined always for some reason

It looks to me like my @redwoodjs/web doesn't have createCell exported for some bizarre reason even though I see it in the node_modules file for that package as an export.

I checked my versions and I don't have multiple installed versions:

(base) martin@martin-HP-EliteBook-840-G5:~/tmp/prernder-test$ npm list @redwoodjs/web
prernder-test@ /home/martin/tmp/prernder-test
├─┬ @redwoodjs/[email protected]
│ ├─┬ @redwoodjs/[email protected]
│ │ └─┬ @redwoodjs/[email protected]
│ │   └── @redwoodjs/[email protected] deduped
│ └─┬ @redwoodjs/[email protected]
│   └── @redwoodjs/[email protected] deduped
├── @redwoodjs/[email protected]
└─┬ [email protected] -> ./web
  └── @redwoodjs/[email protected] deduped

(base) martin@martin-HP-EliteBook-840-G5:~/tmp/prernder-test$ npm ls @redwoodjs/web
prernder-test@ /home/martin/tmp/prernder-test
├─┬ @redwoodjs/[email protected]
│ ├─┬ @redwoodjs/[email protected]
│ │ └─┬ @redwoodjs/[email protected]
│ │   └── @redwoodjs/[email protected] deduped
│ └─┬ @redwoodjs/[email protected]
│   └── @redwoodjs/[email protected] deduped
├── @redwoodjs/[email protected]
└─┬ [email protected] -> ./web
  └── @redwoodjs/[email protected] deduped

(base) martin@martin-HP-EliteBook-840-G5:~/tmp/prernder-test$ npm list -g @redwoodjs/web
/home/martin/.nvm/versions/node/v20.14.0/lib
└── (empty)

I'm on Ubuntu 22.x

from redwood.

dthyresson avatar dthyresson commented on July 19, 2024

@MartinDawson Thanks much for the repo.

I cloned and just did a yarn rw build and seemed to work (am on OSX).

prerender-broken main % yarn rw build
✔ Generating Prisma Client...
✔ Verifying graphql schema...
✔ Building API...
✔ Building Web...

Creating 200.html...
Starting prerendering...
✔ Prerendering /blog-post/1 -> web/dist/blog-post/1.html
✔ Prerendering /blog-post/2 -> web/dist/blog-post/2.html
✔ Prerendering /blog-post/3 -> web/dist/blog-post/3.html

Am on OSX and

prerender-broken main % node -v
v20.10.0
prerender-broken main % yarn -v
4.3.0
prerender-broken main % npm -v
10.2.3

I'll try node 20.14.0.

from redwood.

MartinDawson avatar MartinDawson commented on July 19, 2024

@dthyresson weird.

I just tried on an Ubuntu 22.x Virtual Machine to narrow it down and it worked:

root@C.11280170:~/prerender-broken$ yarn run rw build
 Generating Prisma Client...
 Verifying graphql schema...
 Building API...
 Building Web...

Creating 200.html...
Starting prerendering...
 Prerendering /blog-post/1 -> web/dist/blog-post/1.html
 Prerendering /blog-post/2 -> web/dist/blog-post/2.html
 Prerendering /blog-post/3 -> web/dist/blog-post/3.html

I will have a look and see what's wrong with my redwoodjs/yarn/npm/node on my local and reply to this thread soon. Thanks

from redwood.

dthyresson avatar dthyresson commented on July 19, 2024

using v1.22.19 of yarn somehow in my installs and builds. Maybe cause it is bundled with nvm? not sure.

It might be. I was going down that path testing yesterday and used nvm to update node and all off the sudden my yarn reverted from v4 to v1 and I struggled to get to back to using 4. Must be with nvm.

Glad it's working again.

from redwood.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.