起因:之前在mac系统上的项目,一毛一样的代码在windows系统上,打包之后,打包文件的index.html跟之前的不一样
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
console.time('转换耗时');
const distPath = path.join(__dirname, 'dist', 'index.html');
console.log('distPath:===', distPath);
try {
let htmlText = fs.readFileSync(distPath, 'utf8')
let resultText = '';
let htmlArr = htmlText.match(/.*\n/g) || [];
htmlArr.forEach(str => {
str = str.replace(/\s?nomodule\s?/g, ' ');
str = str.replace(/\s?crossorigin\s?/g, ' ');
str = str.replace(/data-src/g, 'src');
if (!/type="module"/i.test(str)) resultText += str;
});
fs.writeFileSync(distPath, resultText, 'utf8');
console.timeEnd('转换耗时');
} catch (error) {
console.error('发生错误:', error);
}
打包后的index.html
这是无法运行的。
修改:
// 加上以下代码
htmlText = htmlText.replace(/\r\n/g, '\n'); // 替换 Windows 换行符为 LF
打包后的文件: