Comments (6)
I'm in the same boat, @dtslvr . Were you able to get it running?
No, but I'm going with a solution @geongeorge has suggested using an express middleware. Something like this:
// main.ts
app.use(StaticMiddleware);
and
// static.middleware.ts
export const StaticMiddleware = async (
request: Request,
response: Response,
next: NextFunction
) => {
if (...) {
response.send(transformedIndexHtml);
} else {
next();
}
}
from serve-static.
I'm on the same position.
@Kuirak do you found a solution?
from serve-static.
I'm on the same position.
@Kuirak do you found a solution?
@didaquis We are currently using the patch above via patch-package and do some simple string replace in the resulting html
from serve-static.
I have successfully set up your patch @Kuirak with serve-static
4.0.0
and configured ServeStaticModule
like this:
ServeStaticModule.forRoot({
rootPath: join(__dirname, '..', 'client', 'en'),
serveRoot: '/en',
transformIndexHtml: (indexHtml: string) => {
console.log(indexHtml);
return indexHtml;
}
})
ExpressLoader
is registered, but renderFn
(and transformIndexHtml
) is never called. Any idea why?
from serve-static.
I'm in the same boat, @dtslvr . Were you able to get it running?
from serve-static.
I tinkered with it a bit - it doesn't work because renderFn isn't called after you call espress.static()
This isn't what you'd check into the repo, but this got me past the issue --
diff --git a/node_modules/@nestjs/serve-static/dist/interfaces/serve-static-options.interface.d.ts b/node_modules/@nestjs/serve-static/dist/interfaces/serve-static-options.interface.d.ts
index a996aff..e1dd974 100644
--- a/node_modules/@nestjs/serve-static/dist/interfaces/serve-static-options.interface.d.ts
+++ b/node_modules/@nestjs/serve-static/dist/interfaces/serve-static-options.interface.d.ts
@@ -5,6 +5,7 @@ export interface ServeStaticModuleOptions {
renderPath?: string | RegExp;
serveRoot?: string;
exclude?: string[];
+ transformIndexHtml?: (indexHtml: string) => string;
serveStaticOptions?: {
cacheControl?: boolean;
dotfiles?: string;
diff --git a/node_modules/@nestjs/serve-static/dist/loaders/express.loader.js b/node_modules/@nestjs/serve-static/dist/loaders/express.loader.js
index 75c9f9b..2411238 100644
--- a/node_modules/@nestjs/serve-static/dist/loaders/express.loader.js
+++ b/node_modules/@nestjs/serve-static/dist/loaders/express.loader.js
@@ -43,6 +43,23 @@ let ExpressLoader = class ExpressLoader extends abstract_loader_1.AbstractLoader
app.get(renderPath, renderFn);
}
else {
+ app.use((req, res, next) => {
+ if('/' == req.originalUrl && options.transformIndexHtml != null) {
+ fs.readFile(indexFilePath, 'utf8', (err, data) => {
+ if (err) {
+ next(err);
+ return;
+ }
+ const transformed = options.transformIndexHtml(data);
+ res.set('Content-Type', 'text/html');
+ res.send(transformed);
+ })
+ }
+ else{
+ next();
+ };
+ });
+
app.use(express.static(clientPath, options.serveStaticOptions));
app.get(options.renderPath, renderFn);
}
from serve-static.
Related Issues (20)
- serveRoot doesn't work with fastify platform HOT 3
- Get dynamic path
- After updating static-asset to 3.x, excluded paths fallback to index.html ( instead of returning a 404 ) HOT 2
- path-style versioning of static asset HOT 1
- Serve static can't handle globalprefix HOT 1
- Nest can't resolve dependencies of the ServeStaticModule HOT 7
- Provide a documentation how to use setHeaders function
- Support `preCompressed` from `@fastify/static` HOT 1
- Cannot upgrade NestJS dependencies due to @fastify/static package HOT 1
- Not work if any controller in module has @Get('*') HOT 3
- Missing 'prefix' property in ServeStaticOptions HOT 1
- Action Required: Fix Renovate Configuration
- Error when set renderPath as regexp HOT 1
- serveStaticOptions: { index: false } doesn't work HOT 1
- Dependency Dashboard
- WatΡh changes in static folder and reload webpage on change (like browsersync) HOT 1
- Module '"@nestjs/serve-static"' has no exported member 'ServeStaticModule'. HOT 1
- fastify-static is deprecated use @fastify/static instead HOT 1
- Support for nestjs v9 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from serve-static.