05.08.2019, 10:34
|
Интересующийся
|
|
Регистрация: 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% верный. Что я упускаю?
И как мне все эти три файла подключить между собой?
|
|
05.08.2019, 11:22
|
Интересующийся
|
|
Регистрация: 05.08.2019
Сообщений: 10
|
|
Сообщение от Rise
|
Какую?
|
Синтаксическая ошибка, ругается на export - "SyntaxError: Unexpected token export"
И еще import { obj } from "algorithm" ругается на фигурные скобки {}, так я импортирую модуль в js файл
Последний раз редактировалось Pavel_Hi, 05.08.2019 в 11:32.
|
|
05.08.2019, 11:56
|
Интересующийся
|
|
Регистрация: 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.
|
|
05.08.2019, 12:24
|
Интересующийся
|
|
Регистрация: 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.
|
|
05.08.2019, 13:21
|
Профессор
|
|
Регистрация: 28.04.2017
Сообщений: 214
|
|
Возьми, к примеру, скрипт JQuery и срисуй с него эту стандартную конструкцию. Она же так и написана, что если модуль в Ноде - то модуль, а если скрипт на странице - то переменные $ и JQuery в глобальную область window.
|
|
05.08.2019, 14:18
|
|
Профессор
|
|
Регистрация: 08.11.2017
Сообщений: 642
|
|
Надо использовать какой-нибудь webpack и тд бандлеры...
https://webpack.js.org/guides/gettin...ating-a-bundle
здесь в примере, подключенные js скрипты в index.html, будут сами компилироваться...
можно просто скомпилировать свой algorithm.js в es5 модуль, опять же через webpack,...
вынести algorithm.js в отдельный модуль, ) использовать его как UMD модель
|
|
05.08.2019, 16:15
|
Интересующийся
|
|
Регистрация: 05.08.2019
Сообщений: 10
|
|
Сообщение от Audaxviator
|
Возьми, к примеру, скрипт JQuery и срисуй с него эту стандартную конструкцию. Она же так и написана, что если модуль в Ноде - то модуль, а если скрипт на странице - то переменные $ и JQuery в глобальную область window.
|
Это интересная идея, я попробую ее реализовать спасибо
|
|
05.08.2019, 16:18
|
Интересующийся
|
|
Регистрация: 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 модель
|
Ооо спасибо, я что-то о таком читал, только не помнил где и как оно называлось
И этот вариант испробую.
|
|
07.08.2019, 12:17
|
Интересующийся
|
|
Регистрация: 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.
Спасибо
|
|
|
|