quangnguyen1311
quangnguyen1311
SSolidJS
Created by quangnguyen1311 on 3/28/2025 in #support
Deploy SolidStart with cluster?
I've completed development with SolidStart. Currently, I need to deploy it to my vps. So I'm wondering about performance and want to deploy solid-start application with cluster mode. I've to trying the nitro preset for node-cluster with full app.config.ts
import { defineConfig } from "@solidjs/start/config";
import tailwindcss from "@tailwindcss/vite";

export default defineConfig({
vite: {
plugins: [...(tailwindcss() as any)],
},
server: {
prerender: {
routes: ["/"],
},
preset: "node-cluster",
},
});
import { defineConfig } from "@solidjs/start/config";
import tailwindcss from "@tailwindcss/vite";

export default defineConfig({
vite: {
plugins: [...(tailwindcss() as any)],
},
server: {
prerender: {
routes: ["/"],
},
preset: "node-cluster",
},
});
It seems it work as normal when I try pnpm start
pnpm start

> store-front@ start C:\vggroup\store-front
> vinxi start

Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
pnpm start

> store-front@ start C:\vggroup\store-front
> vinxi start

Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
Listening on http://0.0.0.0:3000
My question is do I did good practice or does solid-start can run in cluster mode for better performance?
6 replies
SSolidJS
Created by quangnguyen1311 on 3/27/2025 in #support
SSR doesn't auto fetching data when CSR
Hi, Currently, I've create some routes for SSR purpose and they work perfectly. However, If I go to the page SSR then navigating through some page and back to the SSR page the data SSR before is loss.
const productsLoad = query(async () => {
return await productService.getLatestProductList([]);
}, "products");

export const route = {
preload: () => productsLoad(),
} satisfies RouteDefinition;

export default function HomePage() {
const products = createAsync(() => productsLoad());
console.log(products());

///other code
const productsLoad = query(async () => {
return await productService.getLatestProductList([]);
}, "products");

export const route = {
preload: () => productsLoad(),
} satisfies RouteDefinition;

export default function HomePage() {
const products = createAsync(() => productsLoad());
console.log(products());

///other code
Do I need do other step to ensure keep the data for the page? Or need something to switch from SSR to CSR during navigating?
13 replies
SSolidJS
Created by quangnguyen1311 on 3/27/2025 in #support
Solid-Start error when using fetch/axios/ky to call to external service SSR
Hi I'm new at Solid-Start. Currently, I'd like to call to external API. I try to use all of fetch/axios/ky but all of them returned error. For detail: 1. If I call API inside onMount() it can work as normal.
onMount(() => {
productService.getLatestProductList([
"ca0c1ebd-71db-403f-90e0-a1a9a5295b01",
]);
onMount(() => {
productService.getLatestProductList([
"ca0c1ebd-71db-403f-90e0-a1a9a5295b01",
]);
2. If I call outside of onMount() like inside a createResouse() like
const [products, { refetch }] = createResource(async () => {
const res = await fetch(
"http://localhost:3001/api/products?page=1&limit=10&categoryIds=0e8df9e3-03ce-413f-8d84-5794f9b610db"
);
const data = await (res.json() as Promise<PagingData<Product>>);
return data;
});
const [products, { refetch }] = createResource(async () => {
const res = await fetch(
"http://localhost:3001/api/products?page=1&limit=10&categoryIds=0e8df9e3-03ce-413f-8d84-5794f9b610db"
);
const data = await (res.json() as Promise<PagingData<Product>>);
return data;
});
They all return the error
http://localhost:3001/api/products?page=1&limit=12&categoryIds=0e8df9e3-03ce-413f-8d84-5794f9b610db
node:internal/deps/undici/undici:13502
Error.captureStackTrace(err);
^

TypeError: fetch failed
at node:internal/deps/undici/undici:13502:13
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async function_ (file:///home/quangnv/electronic-ecommerce/store-front/node_modules/.pnpm/[email protected]/node_modules/ky/distribution/core/Ky.js:18:28)
at async Ky._retry (file:///home/quangnv/electronic-ecommerce/store-front/node_modules/.pnpm/[email protected]/node_modules/ky/distribution/core/Ky.js:187:20)
at async result.<computed> [as json] (file:///home/quangnv/electronic-ecommerce/store-front/node_modules/.pnpm/[email protected]/node_modules/ky/distribution/core/Ky.js:54:34) {
[cause]: Error: connect ECONNREFUSED 127.0.0.1:3001
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1634:16)
at TCPConnectWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 3001
}
}
http://localhost:3001/api/products?page=1&limit=12&categoryIds=0e8df9e3-03ce-413f-8d84-5794f9b610db
node:internal/deps/undici/undici:13502
Error.captureStackTrace(err);
^

TypeError: fetch failed
at node:internal/deps/undici/undici:13502:13
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async function_ (file:///home/quangnv/electronic-ecommerce/store-front/node_modules/.pnpm/[email protected]/node_modules/ky/distribution/core/Ky.js:18:28)
at async Ky._retry (file:///home/quangnv/electronic-ecommerce/store-front/node_modules/.pnpm/[email protected]/node_modules/ky/distribution/core/Ky.js:187:20)
at async result.<computed> [as json] (file:///home/quangnv/electronic-ecommerce/store-front/node_modules/.pnpm/[email protected]/node_modules/ky/distribution/core/Ky.js:54:34) {
[cause]: Error: connect ECONNREFUSED 127.0.0.1:3001
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1634:16)
at TCPConnectWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 3001
}
}
3 replies