Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.08.2019, 10:34
Интересующийся
Отправить личное сообщение для Pavel_Hi Посмотреть профиль Найти все сообщения от Pavel_Hi
 
Регистрация: 05.08.2019
Сообщений: 10

Трудности с подключение модуля к html и js файлу одновременно
Всем привет, я постараюсь описать свою задачу как можно понятнее.
И заранее спасибо всем за ответы

У меня есть файл algorithm.js с которого я экспортирую объект с помощью module.exports = obj. В другом js файле я импортирую объект так let obj = require("../algorithm.js"). Все работает.

Теперь я хочу этот же файл algorithm.js, а точнее объект с этого файла импортировать в html файл. Создал <script type= "module"> и импортирую таким способом, import {obj} from "./algorithm.js", но вылазит ошибка "Запрошенный модуль не может обеспечить экспорт с именем «obj»"

Если эскопртировать объект в файле algorithm.js через export let obj={...} то html файл подключается, а js файл выдает ошибку.

Путь 100% верный. Что я упускаю?
И как мне все эти три файла подключить между собой?
Ответить с цитированием
  #2 (permalink)  
Старый 05.08.2019, 11:22
Интересующийся
Отправить личное сообщение для Pavel_Hi Посмотреть профиль Найти все сообщения от Pavel_Hi
 
Регистрация: 05.08.2019
Сообщений: 10

Сообщение от Rise Посмотреть сообщение
Какую?
Синтаксическая ошибка, ругается на export - "SyntaxError: Unexpected token export"
И еще import { obj } from "algorithm" ругается на фигурные скобки {}, так я импортирую модуль в js файл

Последний раз редактировалось Pavel_Hi, 05.08.2019 в 11:32.
Ответить с цитированием
  #3 (permalink)  
Старый 05.08.2019, 11:56
Интересующийся
Отправить личное сообщение для Pavel_Hi Посмотреть профиль Найти все сообщения от Pavel_Hi
 
Регистрация: 05.08.2019
Сообщений: 10

Сообщение от Rise Посмотреть сообщение
У меня нет ошибок:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="module">
        import { obj } from "./algorithm.js";
        console.log(obj.date);
    </script>
</head>
<body></body>
</html>
// algorithm.js
export let obj = { date: new Date };
Верно, вы подключились к html файлу, а теперь нужно algorithm.js подключить другому js файлу. В другом js файле я
импортирую тоже через import { obj } from "../algorithm.js" то тут он ругается на фигурные скобки. Я поставил две точки не просто так, ибо файл находиться в другой папке.

А вот если в файле algorithm.js сделать так
// algorithm.js
let obj = { date: new Date };
module.exports = obj


То подключается к другому js файлу, а к html файлу уже не подключается.
Я пробовал подключиться так < script src = "/путь/algorithm.js" type="text/javascript" > и не работает.

Последний раз редактировалось Pavel_Hi, 05.08.2019 в 12:17.
Ответить с цитированием
  #4 (permalink)  
Старый 05.08.2019, 12:24
Интересующийся
Отправить личное сообщение для Pavel_Hi Посмотреть профиль Найти все сообщения от Pavel_Hi
 
Регистрация: 05.08.2019
Сообщений: 10

Сообщение от Rise Посмотреть сообщение
Что за другой файл? require и module.exports это API ноды, а не браузера, нода работает на сервере, а браузер это клиент, это две разных среды для js.
Дело в том, мне надо один js файл подключить к клиентской части и к node, одновременно.

Получается так, у меня есть файл с алгоритмом, я его хочу подключить к unit тестам и браузеру.

Вернее, я писал код c тестами и импортировал все через module.exports = obj. Но когда пришло время подключить algorithm.js к клиентской части, полезли такие проблемы.

Последний раз редактировалось Pavel_Hi, 05.08.2019 в 12:30.
Ответить с цитированием
  #5 (permalink)  
Старый 05.08.2019, 13:21
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Возьми, к примеру, скрипт JQuery и срисуй с него эту стандартную конструкцию. Она же так и написана, что если модуль в Ноде - то модуль, а если скрипт на странице - то переменные $ и JQuery в глобальную область window.
Ответить с цитированием
  #6 (permalink)  
Старый 05.08.2019, 14:18
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

Надо использовать какой-нибудь webpack и тд бандлеры...

https://webpack.js.org/guides/gettin...ating-a-bundle
здесь в примере, подключенные js скрипты в index.html, будут сами компилироваться...

можно просто скомпилировать свой algorithm.js в es5 модуль, опять же через webpack,...

вынести algorithm.js в отдельный модуль, ) использовать его как UMD модель
Ответить с цитированием
  #7 (permalink)  
Старый 05.08.2019, 16:15
Интересующийся
Отправить личное сообщение для Pavel_Hi Посмотреть профиль Найти все сообщения от Pavel_Hi
 
Регистрация: 05.08.2019
Сообщений: 10

Сообщение от Audaxviator Посмотреть сообщение
Возьми, к примеру, скрипт JQuery и срисуй с него эту стандартную конструкцию. Она же так и написана, что если модуль в Ноде - то модуль, а если скрипт на странице - то переменные $ и JQuery в глобальную область window.
Это интересная идея, я попробую ее реализовать спасибо
Ответить с цитированием
  #8 (permalink)  
Старый 05.08.2019, 16:18
Интересующийся
Отправить личное сообщение для Pavel_Hi Посмотреть профиль Найти все сообщения от Pavel_Hi
 
Регистрация: 05.08.2019
Сообщений: 10

Сообщение от SuperZen Посмотреть сообщение
Надо использовать какой-нибудь webpack и тд бандлеры...

https://webpack.js.org/guides/gettin...ating-a-bundle
здесь в примере, подключенные js скрипты в index.html, будут сами компилироваться...

можно просто скомпилировать свой algorithm.js в es5 модуль, опять же через webpack,...

вынести algorithm.js в отдельный модуль, ) использовать его как UMD модель

Ооо спасибо, я что-то о таком читал, только не помнил где и как оно называлось
И этот вариант испробую.
Ответить с цитированием
  #9 (permalink)  
Старый 07.08.2019, 12:17
Интересующийся
Отправить личное сообщение для Pavel_Hi Посмотреть профиль Найти все сообщения от Pavel_Hi
 
Регистрация: 05.08.2019
Сообщений: 10

Сообщение от SuperZen Посмотреть сообщение
Надо использовать какой-нибудь webpack и тд бандлеры...

https://webpack.js.org/guides/gettin...ating-a-bundle
здесь в примере, подключенные js скрипты в index.html, будут сами компилироваться...

можно просто скомпилировать свой algorithm.js в es5 модуль, опять же через webpack,...

вынести algorithm.js в отдельный модуль, ) использовать его как UMD модель
Действительно помогло, решил задачу через webpack.
Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление HTML и JS VyacheslavBozere Общие вопросы Javascript 3 26.07.2018 13:36
Диалог между HTML и внешним JS в контексте расширения GoogleChrome ev1lart Events/DOM/Window 0 26.04.2017 19:25
Динамическое подключение JS и вызов функции Paqwerty Events/DOM/Window 1 25.04.2017 16:33
checkbox (html) + js volanddd Общие вопросы Javascript 0 06.07.2014 18:40
Html метки + div + JS boltayka Events/DOM/Window 1 07.09.2009 17:21