0
我有一个文件夹结构,这样的应用程序做出反应:预压缩的gzip压缩的文件无法通过快递送达可能是因为走错了路
├── index.html
└── app
├── server.js
├── routes.jsx
├── scripts
│ ├── bundle.js
│ ├── bundle.js.gz
│ ├── vendor.js
│ └── vendor.js.gz
└── components
└── ...
我要为预压缩文件(* .js.gz)时的.js请求的文件,但原来的.js文件被提供,而不是。这可能是因为错误的道路,但我无法弄清楚。
这里是我的server.js文件:
import React from 'react';
import ReactDOMServer from 'react-dom/server';
import { StaticRouter } from 'react-router';
import http from 'http';
import express from 'express';
import fs from 'fs';
import App from '~/routes.jsx';
const index = fs.readFileSync('index.html', 'utf8');
const PORT = process.env.PORT || 8000;
const app = new express();
const server = new http.Server(app);
app.use('/app', express.static('app'));
app.use((request, response) => {
const context = {};
const html = ReactDOMServer.renderToString(
<StaticRouter location={request.url} context={context}>
<App/>
</StaticRouter>
);
if (context.url) {
response.writeHead(301, {Location: context.url});
response.end();
} else {
response.write(index.replace(
/<div id="root"><\/div>/,
`<div id="root">${html}</div>`
));
response.end();
}
});
app.get('*.js', function (request, response, next) {
console.log('js requested');
request.url = request.url + '.gz';
response.set('Content-Encoding', 'gzip');
next();
});
server.listen(PORT);
console.log(`\nApplication available at localhost:${PORT}\n`);
它工作。非常感谢你。我真的很生气。 – ozanilbey
文件服务正常,所以你的建议可以工作,但还有另一个问题。我得到304未修改错误。你有什么想法吗? – ozanilbey
好的,我解决了它。忘记我的独白:) – ozanilbey