Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslnode 18–226 runs
build_error
glibcnode 18–226 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
default
✓ const prerender = require('prerender-node'); app.use(prerender);
✗ import prerender from 'prerender-node';
This package is CommonJS only; does not support ESM imports. Use require().
default with token
✓ app.use(require('prerender-node').set('prerenderToken', 'YOUR_TOKEN'));
To use the Prerender.io cloud service, you must set the 'prerenderToken' via .set(). Not needed if self-hosting.
whitelisted
✓ app.use(require('prerender-node').whitelisted('/search'));
✗ app.use(require('prerender-node').whitelist('/search'));
Method is 'whitelisted' not 'whitelist'. Accepts string or array of paths (regex-compatible).
blacklisted
✓ app.use(require('prerender-node').blacklisted('/admin'));
✗ app.use(require('prerender-node').blacklist('/admin'));
Method is 'blacklisted' not 'blacklist'. Accepts string or array of paths.
Sets up Express middleware for prerendering: uses token from env or runs without, then serves a simple HTML page.
const express = require('express');
const prerender = require('prerender-node');
const app = express();
const PORT = process.env.PORT || 3000;
const PRERENDER_TOKEN = process.env.PRERENDER_TOKEN ?? '';
if (PRERENDER_TOKEN) {
app.use(prerender.set('prerenderToken', PRERENDER_TOKEN));
} else {
app.use(prerender);
}
app.get('/', (req, res) => {
res.send(`
<html>
<head><title>Test</title></head>
<body>
<div id="root">Hello World</div>
<script>document.getElementById('root').innerHTML = 'Prerendered';</script>
</body>
</html>
`);
});
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
Errors
Common errors & fixes
Cannot find module 'prerender-node'
Package not installed or missing from package.json.
fixRun 'npm install prerender-node --save' to install the package.
prerender-node: no token set, using default (free) service
You did not set a prerenderToken, so the middleware falls back to the free public service (limited).
fixSet your token via .set('prerenderToken', 'YOUR_TOKEN') or set the PRERENDER_TOKEN environment variable. prerender-node: beforeRender must return a string or a promise that resolves to a string
The beforeRender callback returned something other than a string or Promise<string>.
fixEnsure beforeRender returns a string (e.g., cache key) or a Promise resolving to a string.
Audit
Dependencies
prerenderoptionalThe middleware makes requests to the Prerender service (self-hosted or cloud) to fetch prerendered HTML.