Не работает import в javascript

Я установил пакет через npm как обычно (npm install jquery например). Попытался импортировать пакет:

script.js

import jquery from './jquery';

(импорт показан примерный, я мог забыть как правильно импортировать именно jquery)

Так вот дело не в самом пакете, а в ошибке: Uncaught SyntaxError: Cannot use import statement outside a module. (дочитайте до конца прежде чем скидывать тот вопрос на stack про type="module")

Я прописал в теге script - type="module"

Консоль браузера затихла, ошибок не было, но вот сама библиотека не работала, вооообще

Я также пытался ставить "type": "module" в package.json

Сборщиков не использовал, подключал файл script.js через тег script src="src/js/script.js">

Но все бестолку, консоль браузера писала туже самую ошибку Однако у других все работает без каких то там type module в теге. Напишите пожалуйста в чем может быть проблема, без всяких альтернатив. Заранее спасибо за ответ


Ответы (2 шт):

Автор решения: Qwertiy

Расширение тоже надо указывать, если ты рассчитываешь, что браузер подтянет файл по сети.

→ Ссылка
Автор решения: Air

Начну с того, что я не увидел слово сервер.

Без какого либо СЕРВЕРА export import работать не будут.

Нельзя просто с проводника открыть файл index.html и мечтать, что будет работать, да хоть миллион раз пропиши <script type="module" src="./js/index.js"></script>

Атрибут type="module" обязателен...

Лично я запускаю при помощи плагина Live Server для редактора VS-Code

Далее про волшебное слово NPM...

Если просто установить например JQ через npm, то работать будет, но при условии, если путь к файлу будет абсолютный

import '../node_modules/jquery/dist/jquery.js';

Далее про export import

Для того чтобы что-то импортировать, это надо экспортировать...

Экспортировать и импортировать можно разными вариантами...

Например у нас есть <script type="module" src="./js/index.js"></script> В нем и импортируем..

Есть файл test.js из него экспортируем...

export const test_1 = ['Zina', 'Leha', 'Kolay'];
export const test_2 = ['15', '25', '45'];
export const test_3 = ['Good', 'Bad', 'OK'];
export const test_4 = ['Rus', 'Geo', 'Eng'];

а в фале index.js

import {test_1, test_2, test_3, test_4} from './test.js';

Или можем экспортировать весь файл целиком export default '*';

function testExport(n) {
    return n + n;
}

console.log("testExport(4)", testExport(4));

function testExport_1(n) {
    return n + n;
}

console.log("testExport_1(5)", testExport_1(5));


export default '*';

А импортируем просто файл

import './test-2.js';

Или экспортировать отдельные переменные или функции

function testExport(n) {
    return n + n;
}

const test_4 = ['Rus', 'Geo', 'Eng'];


export  {test_4, testExport};

И импорт

import {test_4, testExport} from './test-2.js';

P.S. И да Qwertiy прав, расширение файла обязательно...

→ Ссылка