Почему такая ошибка в консоле при запуске проекта просто с index.html
Проблема заключается в том что когда запускаю с лайв сервера в vs code код работает нормально без проблем, когда хочу запустить просто кликнув на index.html в консоле в браузере такая ошибка: Access to script at 'file:///D:/Slavko%20Programming%20Folder/flashcard-scanner/card-editor/assets/js/app.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https. Помогите исправить ошибку пожалуста app.js:1 Failed to load resource: net::ERR_FAILED
// start vue app
const App = {
data() {
return {
title: "Card Editor",
originalArr: [], // originalArr - original data
copiedArr: [] // copiedArr - copied data from the original array
}
},
mounted() {
},
methods: {
// push to the original array
async originalPush() {
let file = document.querySelector("#file").files[0]
let data
data = await this.loadFile(file)
this.originalArr.push(...JSON.parse(data))
this.copyOriginal()
},
// the method that loads a file
loadFile(file) {
return new Promise((resolve, reject) => {
let reader = new FileReader()
reader.onload = function(event) {
let data = event.target.result
resolve(data)
}
reader.readAsText(file)
})
},
// copyOriginal method:
copyOriginal() {
this.copiedArr = JSON.parse(JSON.stringify(this.originalArr))
},
// change item id
changeItemId(item, e) {
item.id = Number(e.target.value)
e.target.value = ""
},
// change item en topic
changeItemEnTopic(item, e) {
item.languages.en.topic = e.target.value
e.target.value = ""
},
// change en words
changeEnWords(item, e) {
let target = e.target.value
item.languages.en.words = target.split(",")
e.target.value = ""
},
// change item uk topic
changeItemUkTopic(item, e) {
item.languages.uk.topic = e.target.value
e.target.value = ""
},
// change en words
changeUkWords(item, e) {
let target = e.target.value
item.languages.uk.words = target.split(",")
e.target.value = ""
},
// download function
download(fileName, content) {
let element = document.createElement("a")
element.style.display = "none"
element.setAttribute("href", "data:text/plain;charset=utf-8," + encodeURIComponent(content))
element.setAttribute("download", fileName)
document.body.appendChild(element)
element.click()
document.body.removeChild(element)
},
// Here, when the user clicks the download button, start download
downloadFile() {
// let content = JSON.stringify(this.copied)
let content = JSON.stringify(this.copiedArr)
let fileName = "test.json"
this.download(fileName, content)
}
}
}
Vue.createApp(App).mount("#container")
<!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>Card Review</title>
<!-- css -->
<link rel="stylesheet" href="./assets/css/style.css">
</head>
<body>
<!-- container -->
<div id="container" class="container">
<h1 class="title"> {{ title }} </h1>
<input type="file" id="file">
<button id="load" @click="originalPush">Load JSON File</button>
<button id="download" @click="downloadFile">Download JSON File</button>
<!-- card__inner -->
<div class="card__inner">
<!-- card__item -->
<div class="card__item" v-for="(item, idx) in copiedArr" :key="item.id">
<!-- card front -->
<div class="card__front">
<div class="card__header">
<span> {{ item.id}} <div class="div"><input type="text" class="input" @keyup.enter="changeItemId(item, $event)"></div> </span>
<span> {{ item.languages.en.topic }} <div class="div"><input type="text" class="input" @keyup.enter="changeItemEnTopic(item, $event)"></div> </span>
</div>
<div class="card__body">
<div class="card__content">
<span class="card__word" v-for="word in item.languages.en.words"> {{ word }} </span>
</div>
<input type="text" @keyup.enter="changeEnWords(item, $event)">
</div>
</div> <!-- card__front -->
<!-- card back -->
<div class="card__back">
<div class="card__header back">
<span> {{ item.id }}</span>
<span> {{ item.languages.uk.topic}} <div class="div"><input type="text" class="input" @keyup.enter="changeItemUkTopic(item, $event)"></div> </span>
</div>
<div class="card__body">
<div class="card__content">
<span class="card__word" v-for="word in item.languages.uk.words"> {{ word }} </span>
</div>
<input type="text" @keyup.enter="changeUkWords(item, $event)">
</div>
</div> <!-- /back -->
</div> <!-- /card__item -->
</div> <!-- /card__inner -->
</div> <!-- /container -->
<!-- vue3 cdn -->
<script src="https://unpkg.com/vue@next"></script>
<!-- javascript -->
<script type="module" src="./assets/js/app.js"></script>
</body>
</html>