gpt4 book ai didi

javascript - 在 ES6 : "Failed to resolve module specifier "vue""中导入包

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:36 29 4
gpt4 key购买 nike

尝试遵循一些 Vue 教程,但我目前无法在 .js 文件中导入 Vue,然后在我的 index.html 中导入此文件。这就是我在 index.html 中导入脚本的方式:

<script src="./js/main.js" type="module"></script>

如果我在我的 main.js 文件中这样做:

import Vue from 'vue';

我在浏览器控制台中收到以下错误:

Uncaught TypeError: Failed to resolve module specifier "vue". Relative references must start with either "/", "./", or "../".

如果我的导入行:

import Vue from '../../node_modules/vue';

然后我得到一个不同的错误:

http://localhost:63342/vue-official-tutorial/node_modules/vue net::ERR_ABORTED 404 (Not Found)

我做错了什么?

最佳答案

截至 2020 年 6 月

在浏览器中直接使用 ES 模块的方式是这样的:

  1. 使用 ESM 版本的依赖项(具有 import 而不是 require 的版本)。

    例如,Vue ESM 版本位于:https://cdnjs.cloudflare.com/ajax/libs/vue/3.2.41/vue.esm-browser.prod.js

  2. 让您的浏览器使用实验性的 importmap功能。

    2022 年更新:现在主要浏览器 support导入 map

    对于旧版本的 Chrome,这是在 chrome://flags#enable-experimental-productivity-features 下(最新的 Chrome 版本将其移至 chrome://flags#enable-experimental-web-platform-features 下)

  3. 创建 importmap在您的 HTML 文件中。

    它只适用于内联 <script>目前在 Chrome 中的标签。例如:

<script type="importmap">
{ "imports": {
"vue": "https://cdnjs.cloudflare.com/ajax/libs/vue/3.2.41/vue.esm-browser.prod.js",
"vue-router": "https://cdnjs.cloudflare.com/ajax/libs/vue-router/4.1.5/vue-router.esm-browser.min.js"
} }
</script>

  1. 将您自己的代码作为 ESM 模块加载。
<script type="module" src="./main.js"></script>
  1. 在您自己的脚本和您导入的脚本中 - 您现在可以从命名模块成功导入。

Import Maps Documentation


完整示例:

<html>
<body class="app">

<script type="importmap">
{ "imports": {
"vue": "https://cdnjs.cloudflare.com/ajax/libs/vue/3.2.41/vue.esm-browser.prod.js",
"vue-router": "https://cdnjs.cloudflare.com/ajax/libs/vue-router/4.1.5/vue-router.esm-browser.min.js",
"@vue/devtools-api": "https://unpkg.com/@vue/devtools-api@6.4.5/lib/esm/index.js"
} }
</script>

<script type="module">
import { createRouter, createWebHistory } from 'vue-router'
import { createApp } from 'vue'

const app = createApp({ template: 'Hello world.' })
const router = createRouter({
routes: [{ path: '/:pathMatch(.*)*', component: app }],
history: createWebHistory()
})
app.use(router)

document.addEventListener('DOMContentLoaded', () => app.mount('.app'));
</script>

</body>
</html>

关于javascript - 在 ES6 : "Failed to resolve module specifier "vue""中导入包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52612446/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com