Импорт Javascript не работает в коде Visual Studio

Я не могу ничего импортировать в свои файлы javascript на своем веб-сайте, я много чего пробовал, но это не работает.

Итак, я хочу импортировать файл .json в файл .js, используя ключевое слово import, но это не работает. Другая проблема заключается в том, что код Visual Studio не показывает мне ошибку, но консоль делает...

часть импорта main.js

import dropDownList from "./navigationList.json"; //This is line number 1

console.info(dropDownList.shop.kits);

файл navigationList.json

{
    "shop": {
        "kits": "DIY Physics Kits",
        "merch": "Merchendise"
    },

    "learn": {
        "first-sub": "Mechanics",
        "second-sub": "Miscellaneous"
    }
}

Ошибка, которую показывает консоль:

mainJS.js:1 Uncaught SyntaxError: Unexpected identifier

Консоль говорит, что с моим импортом возникла Uncaught SyntaxError, и это заставляет меня делать мой код длинным и без импорта, что отстой. Пожалуйста помогите

import ключевое слово не работает с импортом данных json, оно может импортировать только определенные модули из файла js. См. документацию — developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… и обходной путь — stackoverflow.com/questions/34944099/….
Kanwal Sarwara 28.05.2019 20:46

используйте API fetch, чтобы получить JSON.

Bibberty 28.05.2019 20:48

@Sarwara - это: ключевое слово import не работает с импортом данных json не точно. Можно импортировать JSON данные, пока он экспортируется. Но нельзя импортировать из типа MIME, отличного от JS (например, navigationList.json).

Randy Casburn 28.05.2019 21:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
6 659
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Синтаксис import является частью модулей ES6. Похоже, вы используете Node.js, который по умолчанию не поддерживает модули ES6. Однако Node.js имеет экспериментальную поддержку модулей ES6.

  1. Переименуйте файл, чтобы он имел расширение .mjs:
mv mainJS.js mainJS.mjs
  1. Запустите его с флагом --experimental-modules:
node --experimental-modules mainJS.mjs

Я проверил это с вашим кодом, и он работает:

% node --experimental-modules main.mjs
(node:73044) ExperimentalWarning: The ESM module loader is experimental.
DIY Physics Kits

На момент написания этой статьи я использую Node.js v12.3.1:

% node --version
v12.3.1

В качестве альтернативы вы можете транспилировать свой код с помощью такого инструмента, как Babel, который меняет imports на requires.

Привет, Эллиот, ты действительно помог мне, хотя я не использую Node.js, эти скрипты подключены к моей веб-странице с тегом <script>, однако я попытаюсь транспилировать свой код, чтобы использовать require(), и я посмотрю, работает ли он. Примечание. В настоящее время, когда я пытаюсь использовать слово require() в своем коде, консоль говорит, что require is not defined.

Dan 29.05.2019 11:03

Кстати: в этой статье говорится, что без сервера я не могу использовать ключевое слово import, и в настоящее время я запускаю свой веб-сайт на своем компьютере с протоколом file://, поэтому я думаю, что это была главная проблема...

Dan 29.05.2019 11:06

navigation_list.json

{
    "shop": {
        "kits": "DIY Physics Kits",
        "merch": "Merchendise"
    },

    "learn": {
        "first-sub": "Mechanics",
        "second-sub": "Miscellaneous"
    }
}

main.js

var navigation_list = require('./navigation_list.json');
console.info(`>>>> Returned JSON data: ${navigation_list.shop.kits}`);

Завершите вывод здесь:

Другие вопросы по теме