我想通过HTML和JS制作docx文件,但我得到下一个错误:
无法加载模块脚本:应为JavaScript模块脚本,但服务器响应的MIME类型为“text/html”。根据HTML规范,对模块脚本强制执行严格的MIME类型检查。
我使用下一个html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=chrome">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<nav></nav>
<section>
<button>
<input type="file" id="input">
<button style="display: block; margin-top: 5em;" id="generate">Create custom DOCX type from XL document</button>
</button>
</section>
<footer></footer>
<script type="module" src="js/script.js"></script>
</body>
</html>
js:
import { Document, Packer } from "../node_modules/docx/build/index"
import { saveAs } from "../node_modules/file-saver/dist/FileSaver"
document.getElementById("generate").addEventListener(
"click",
function (event) {
generateWordDocument(event)
},
false
)
function generateWordDocument(event) {
event.preventDefault()
// Create a new instance of Document for the docx module
let doc = new Document()
// Call saveDocumentToFile with the document instance and a filename
saveDocumentToFile(doc, "New Document.docx")
}
function saveDocumentToFile(doc, fileName) {
// Create new instance of Packer for the docx module
const packer = new Packer()
// Create a mime type that will associate the new file with Microsoft Word
const mimeType =
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
// Create a Blob containing the Document instance and the mimeType
packer.toBlob(doc).then(blob => {
const docblob = blob.slice(0, blob.size, mimeType)
// Save the file using saveAs from the file-saver package
saveAs(docblob, fileName)
})
}
const inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles, false);
let fileList = inputElement.files
function handleFiles() {
fileList = this.files; /* now you can work with the file list */
console.log(fileList[0].name)
}
我下载docx和文件保存程序下一个方式:
npm install docx
npm install file-saver
关于http-server
我正在使用http-server来测试我的代码
http-server -c-1
如何修复此代码中text/html MIME类型?
我试图改变路径到docx和文件保护程序一样“../package.json/docx”“docx”../node_modules/docx”等,但它不工作,我也试图使用另一个服务器作为http服务器和活服务器在vscode,但没有什么是wornking
1条答案
按热度按时间fhity93d1#
这个错误与你的DOCX无关。它抱怨在请求模块时得到的
js/script.js
响应的MIME类型。显然,http-server
返回text/html
作为内容类型,这是不允许的;它必须是一个有效的JavaScript MIME类型(例如text/javascript
,尽管application/javascript
和其他一些类型也可以)。The
http-server
documentation说明你可以传递--mimetypes
来指定一个包含要使用的MIME类型的.types
文件,告诉它使用text/javascript
作为MIME类型(可能使用charset
),尽管它没有告诉你该文件应该是什么格式(你可能可以从源代码中找到它)。或者,您可以考虑使用另一个服务器来自动处理此问题。