Vue应用程序在Chrome中产生错误,我找不到答案



我正在尝试深入学习Vue,所以我再次从文档的开头开始,并从头到尾进行工作。

这是我的index.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Learning Vue</title>
<script type="importmap">
{
"imports": {
"vue": "https://unpkg.com/vue@3/dist/vue.esm-browser.js"
}
}
</script>
</head>
<body>
<div id="app"></div>
<script type="module" src="./index.js"></script>
</body>
</html>

,这是我的index.js文件:

import { createApp } from "vue";
import App from "./App.vue";
const app = createApp(App);
app.mount("#app");
这是我的App.vue文件:
<template>
<button @click="increment">
{{ count }}
</button>
</template>
<script setup>
import { ref } from "vue";
const count = ref(0);
function increment() {
count.value++;
}
</script>

在Chrome(版本102.0.5005.61(官方版本)(64位))中,我得到以下错误,页面上没有显示:加载模块脚本失败:预期是JavaScript模块脚本,但服务器响应MIME类型为"application/octet-stream"。严格的MIME类型检查是根据HTML规范对模块脚本强制执行的。

我读到,如果浏览器不知道它是什么类型,它将响应"application/octet-stream"但如果你指定脚本的类型为模块为什么浏览器不知道它是什么类型?

我真的搜索到为什么我得到这个错误,但我找不到答案。我也看了很多例子,似乎我的代码中没有错误。

为什么我得到这个错误,请和我如何修复它?

您的web服务器正在使用不正确的Content-TypeHTTP头向浏览器提供文件-它必须是text/javascript,但服务器要么发送application/octet-stream,要么根本不设置此HTTP头

这是你的web服务器的责任-不是浏览器,当然不是Vue。Firefox也会给出类似的错误。

我明白了,这实际上是相当明显的,但我缺乏从一开始就看到这一点的经验。

如果不使用Vue命令行,则不能将文件命名为. Vue,因为浏览器不知道Vue文件是什么。你必须把它命名为。js比如这个不行

<script type="module">
import { createApp } from "vue";
import app from "./app.vue";
createApp(app).mount("#app");
</script>

但是这很好

<script type="module">
import { createApp } from "vue";
import app from "./app.js";
createApp(app).mount("#app");
</script>

所以我们每天都在学习。我确实觉得vuejs.org的文档可以改进,他们可以展示更好的完整代码示例,而不仅仅是代码片段。初学者需要额外的帮助。

importmap适合开发,目前还没有很好的支持。

你可以使用nexuscode这样的服务。在线作为开发环境,无需担心这类问题。

相关内容

最新更新