umi ssr 基于koa,打包构建静态资源文件,umi.server.js里面引入umi.js和umi.css没有hash后缀,导致运行路径报错
暂时的解决办法是写一个node脚本,build构建完成之后,把umi.server.js里面引入的umi.js和umi.css替换成有hash值的
在项目根目录下,新建build 文件夹,在里面新建build.js,里面是打包完成之后,把umi.server.js里面引入的umi.js和umi.css替换成有hash的 在打包命令后面增加脚本执行的命令
build.js
const fs = require('fs');
const path = require('path');
// dist目录
let distPath = path.resolve(__dirname, '../dist');
// serve.js目录
let servePath = path.resolve(__dirname, '../dist/umi.server.js');
const files = fs.readdirSync(distPath);
let umiJs = '';
let umiCss = '';
files.forEach(item => {
if (item.includes('umi') && !item.includes('serve')) {
if (item.includes('js')) {
umiJs = item;
}
if (item.includes('css')) {
umiCss = item
}
}
});
let content = fs.readFileSync(servePath, 'utf8');
content=content.replace(/umi.js/gi,umiJs ).replace(/umi.css/gi,umiCss)
fs.writeFileSync(servePath, content);