Skip to content

yupix/remix-v2-server

 
 

Repository files navigation

Use the following commands to quickly start a Remix v2 app with a basic Express server:

  • CommonJS + server.js: npx create-remix --template https://github.com/xHomu/remix-v2-server/tree/cjs-server.js
  • CommonJS + server.ts: npx create-remix --template https://github.com/xHomu/remix-v2-server/tree/cjs-server.ts
  • ES Modules + server.js: npx create-remix --template https://github.com/xHomu/remix-v2-server/tree/esm-server.js
  • ES Modules + server.ts: npx create-remix --template https://github.com/xHomu/remix-v2-server/tree/cjs-server.ts

If updating from a v1 Remix app, the following files probably needs to be adjusted:

  • package.json
  • remix.config.js
  • tsconfig.json
  • server.ts or server.js

What changes will depend on whether your repo is ESM/CJS, and whether you're using a typescript or javascript server:

For more on Remix v2 dev server, check these talks by @pcattori Pedro Cattori!

Troubleshooting

[ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for ... "/server.ts"

This is actually a Node 20 bug, downgrade to Node 18 should fix it.

[ERR_REQUIRE_ESM]: require() of ES Module after update

Remix serve cannot be found

This occurs because you're accidentally using the built-in RAS instead of of a custom Express server.js/ts.

Make sure you're using v2_dev: true instead of unstable_dev: true when using Remix v1.18+.

"Error: package.json not found at PackageJson.load"

To maintain Windows compatibility, escape the quotation marks in package.json script:

  • "dev": "remix dev -c 'npm run dev:server' --manual",
  • "dev": "remix dev -c \"npm run dev:server\" --manual",

tsx watch fails to start on Windows

Due to upstream an tsx watch bug, use ts-node and nodemon --watch instead.

If you prefer tsx watch, you will need to patch node_modules\@remix-run\dev\dist\devServer_unstable\index.js with patch-package to fix the issue:

    let newAppServer = execa.command(command, {
-     stdio: "pipe",
+     stdio: ['ignore', 'inherit', 'inherit'],
+     shell: true,

Alternatively, you can use tsx without the watch flag: "dev:server": "tsx ./server.ts",.

Beware that without tsx watch, changes to server.ts will not appear until you manually reboot the server.


Welcome to Remix!

Development

Start the Remix development asset server and the Express server by running:

npm run dev

This starts your app in development mode, which will purge the server require cache when Remix rebuilds assets so you don't need a process manager restarting the express server.

Deployment

First, build your app for production:

npm run build

Then run the app in production mode:

npm start

Now you'll need to pick a host to deploy it to.

DIY

If you're familiar with deploying express applications you should be right at home just make sure to deploy the output of remix build

  • build/
  • public/build/

Using a Template

When you ran npx create-remix@latest there were a few choices for hosting. You can run that again to create a new project, then copy over your app/ folder to the new project that's pre-configured for your target server.

cd ..
# create a new project, and pick a pre-configured host
npx create-remix@latest
cd my-new-remix-app
# remove the new project's app (not the old one!)
rm -rf app
# copy your app over
cp -R ../my-old-remix-app/app app

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 90.2%
  • JavaScript 8.8%
  • CSS 1.0%