Commit 1de1afb8 by 周田

fix: 修复静态文件的报错

parent 9e2a0151
// 如果运行报错 Cannot use import statement outside a module 换成
// const fs = require("fs");
import fs from "fs";
const htmlPath = "./dist/index.html"; // 打包后的html文件路径
const htmlText = fs.readFileSync(htmlPath, 'utf8');
const htmlArr = htmlText.match(/.*\n/g) || [];
let result = "";
htmlArr.forEach(v => {
v = v
.replace(/script ?nomodule\s?/g, "script ")
.replace(/\s?crossorigin\s?/g, " ")
.replace(/data-src/g, 'src');
if (!v.includes(`script type="module"`)) {
result += v;
}
});
fs.writeFileSync(htmlPath, result, 'utf8');
console.log("处理完成");
\ No newline at end of file
...@@ -10,35 +10,4 @@ ...@@ -10,35 +10,4 @@
<div id="app"></div> <div id="app"></div>
<script type="module" src="/src/main.ts"></script> <script type="module" src="/src/main.ts"></script>
</body> </body>
<script>
(function (win) {
// 获取页面所有的 <script > 标签对象
let scripts = document.getElementsByTagName('script')
// 遍历标签
for(let i = 0; i < scripts.length; i++) {
// 提取单个<script > 标签对象
let script = scripts[i]
// 获取标签中的 src
let url = script.getAttribute("src")
// 获取标签中的 type
let type = script.getAttribute("type")
// 获取标签中的js代码
let scriptText = script.innerHTML
// 如果有引用地址或者 type 属性 为 "module" 则代表该标签需要更改
if (url || type === "module") {
// 创建一个新的标签对象
let tag=document.createElement('script');
// 设置src的引入
tag.setAttribute('url',url);
// 设置js代码
tag.innerHTML = scriptText
// 删除原先的标签
script.remove()
// 将标签添加到代码中
document.getElementsByTagName('head')[0].appendChild(tag)
}
}
})(window)
</script>
</html> </html>
...@@ -5,8 +5,9 @@ ...@@ -5,8 +5,9 @@
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vue-tsc && vite build", "build": "vue-tsc && vite build && node handleHTML.js",
"preview": "vite preview" "preview": "vite preview",
"html": "node handleHTML.js"
}, },
"dependencies": { "dependencies": {
"@vitejs/plugin-legacy": "^4.1.1", "@vitejs/plugin-legacy": "^4.1.1",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment