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 import (loader usage)
✓ import html from 'prerender-loader?!./index.html';
✗ const html = require('prerender-loader?!./index.html');
CommonJS require works if using Webpack with CJS modules, but ESM is recommended for modern projects. The loader string includes '!!' to bypass other loaders.
Webpack config (module.rules)
✓ module.exports = { module: { rules: [ { test: /\.html$/, loader: 'prerender-loader?string' } ] } }
✗ module.exports = { module: { rules: [ { test: /\.html$/, use: 'prerender-loader' } ] } }
The '?string' parameter is required for HTML output; omitting it causes errors. Use 'use' for multiple loaders, but 'loader' is simpler here.
HtmlWebpackPlugin integration
✓ new HtmlWebpackPlugin({ template: '!!prerender-loader?string!index.html' })
✗ new HtmlWebpackPlugin({ template: 'prerender-loader!index.html' })
The '!!' prefix is important to avoid double-processing by html-loader or raw-loader. The '?string' query ensures the loader exports a string, not raw HTML.
Installs prerender-loader and integrates with HtmlWebpackPlugin to prerender a simple app that modifies the DOM.
npm install --save-dev prerender-loader webpack memory-fs
// webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './src/index.js',
output: { filename: 'bundle.js' },
plugins: [
new HtmlWebpackPlugin({
template: '!!prerender-loader?string!index.html'
})
]
};
// index.html (example)
<!DOCTYPE html>
<html>
<head><title>My App</title></head>
<body><div id="root"></div></body>
</html>
// src/index.js (example)
document.getElementById('root').innerHTML = '<h1>Hello</h1>';
// Run: npx webpack --mode production
Errors
Common errors & fixes
Error: Cannot find module 'memory-fs'
missing peer dependency memory-fs
fixnpm install --save-dev memory-fs
Error: The '?' query parameter is missing or invalid. Use 'string' to export an ES module.
forgot to add ?string to the loader query
fixUse '!!prerender-loader?string!file.html' instead of '!!prerender-loader!file.html'
Error: Prerendering failed: document is not defined
the prerendered code references DOM APIs without a JSDOM environment
fixEnsure the loader is applied to an HTML file (not a JS file) or use string prerendering
Audit
Dependencies
webpackrequiredLoader runs as part of Webpack build; webpack must be installed
memory-fsrequiredUsed internally by the loader for in-memory file system operations during prerendering