Я пытаюсь прочитать файл json в своей программе Javascript.
configuration.json
{
"ProxyURLS": ["xxxx","xxxx"],
"DatabaseURLS": ["xxxx"]
}
Файл JSON находится в том же каталоге, что и index.html.
Индексировать HTML
<!DOCTYPE html>
<html>
<head>
<title>QUBGrader</title>
<script type="text/javascript">
import { readFile } from "fs/promises";
//Define path for configuration readFile
path = "./configuration"
//read file get json
async function readJsonFile(path) {
const file = await readFile(path, "utf8");
return JSON.parse(file);
}
readJsonFile("./package.json").then((data) => {
console.log(data);
getProxyURL(data);
});
function getProxyURL(data)
{
console.log("here")
console.log(data)
}
... file continues ...
Я хочу получить объект JSON и передать его функции getProxyURL.
Я получаю эту ошибку, когда я не включаю оператор импорта
(index):13 Uncaught (in promise) ReferenceError: readFile is not defined
at readJsonFile ((index):13:16)
at (index):17:1
Я получаю эту ошибку, когда включаю оператор импорта
Uncaught SyntaxError: Cannot use import statement outside a module (at (index):8:1)
Из поиска ошибки (https://bobbyhadz.com/blog/javascript-syntaxerror-cannot-use-import-statement-outside-module#:~:text =The%20%22SyntaxError%3A%20Cannot%20use%20import,json%20for%20Node.)
Кажется, мне нужно определить «модуль», но я не уверен, как это сделать в одном файле .html.
Любая помощь оценили.
Я последовал совету из этого вопроса: Динамический импорт с файлом json не работает машинопись
ИЗМЕНИТЬ
После реализации предложенного решения:
function readJson () {
// http://localhost:8080
fetch('./configuration')
.then(response => {
if (!response.ok) {
throw new Error("HTTP error " + response.status);
}
return response.json();
})
.then(json => {
getProxyURL(json);
//console.log(this.users);
})
.catch(function () {
this.dataError = true;
})
};
readJson();
Я получаю такую ошибку:
Failed to load resource: the server responded with a status of 404 (Not Found)
1 ответ
Модуль fs/promises
доступен только в node.js, но не в браузерах. Вы должны использовать API fetch()
, который поддерживается всеми браузерами (кроме очень старых браузеров, таких как Internet Explorer). Вы можете найти документацию на MDN.
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
fs/promises
— это модуль Node.js.