Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.07.2022, 20:21
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Статью не открывал, но чтоб перейти в ноде с require на import достаточно в package.json дописать "type": "module", остальное лирика.)

noveek, ну и скобочки куда ни попадя пихать не надо. Просто
import { books } from "./module1.js";
__________________
29375, 35
Ответить с цитированием
  #12 (permalink)  
Старый 19.07.2022, 21:20
Аспирант
Отправить личное сообщение для noveek Посмотреть профиль Найти все сообщения от noveek
 
Регистрация: 09.06.2017
Сообщений: 40

Пока ничего не помогло единственное вот так:
import ("./module1.js");

Выдаёт:
[object Promise]
Ответить с цитированием
  #13 (permalink)  
Старый 19.07.2022, 21:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

noveek, ты с упорством носорога делаешь совсем не то...
Почитай хоть статьи про работу с модулями...
Ссылки я тебе дал.
Да и тут уже много чего уже написали.
Ответить с цитированием
  #14 (permalink)  
Старый 19.07.2022, 22:22
Аспирант
Отправить личное сообщение для noveek Посмотреть профиль Найти все сообщения от noveek
 
Регистрация: 09.06.2017
Сообщений: 40

Сообщение от ksa Посмотреть сообщение
noveek, ты с упорством носорога делаешь совсем не то...
Почитай хоть статьи про работу с модулями...
Ссылки я тебе дал.
Да и тут уже много чего уже написали.
Ссылки то дал, но там тоже самое написано что я делал натыкаюсь на ошибку
Ответить с цитированием
  #15 (permalink)  
Старый 19.07.2022, 23:06
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Сообщение от noveek
Пока ничего не помогло
Не помогло переименование расширения в .mjs? Всех файлов, и тех, где export, и тех, где import.
Не помогло "type": "module" в package.json?

Сообщение от noveek
Выдаёт:
[object Promise]
А что он еще должен выдавать?
https://developer.mozilla.org/ru/doc...BE%D1%80%D1%82
Ответить с цитированием
  #16 (permalink)  
Старый 19.07.2022, 23:25
Аспирант
Отправить личное сообщение для noveek Посмотреть профиль Найти все сообщения от noveek
 
Регистрация: 09.06.2017
Сообщений: 40

Сообщение от voraa Посмотреть сообщение
Не помогло переименование расширения в .mjs? Всех файлов, и тех, где export, и тех, где import.
Не помогло "type": "module" в package.json?
Нет =) Тут ситуация сложнее я использую JSEngine из под Delphi:
https://www.winsoft.sk/jsengine.htm
Из под него уже пытаюсь импортировать модули .js извините следовало сразу обрисовать всю ситуацию )
В свою очередь он использует ChakraCore https://github.com/chakra-core/ChakraCore
То есть скрипт из под Delphi выглядит так сейчас:
procedure TForm1.Button1Click(Sender: TObject);
var
  MyObject: JsValueRef;
  Result: JsValueRef;
begin
try
Engine := TJSEngine.Create;
Memo1.Lines.Text:=Engine.ConvertToString(Engine.RunScript('import ("./module1.js");'));
except
on E: Exception do
ShowException(Memo2, E);
end
Engine.Free;
end;

Последний раз редактировалось noveek, 19.07.2022 в 23:32.
Ответить с цитированием
  #17 (permalink)  
Старый 20.07.2022, 04:42
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Хз, если тебе пишет что незя использовать import - это одно, значит надо заставить твою хрень как-то воспринимать скрипт как модуль, консольная версия chakracore при беглом взгляде по issue вроде может это с параметром -es6module, как оный задать в твоей приблуде - хз, сам смотри.

Если же у тебя нормально запускаются скрипты с import - вопросы иной:
import "file.js"; в начале файла - импортировать простой скрипт(не модуль) в начале модуля.
import some from "file.js"; в начале файла - импортировать конкретное экспортированаое начение из модуля.
import("file.js") в любом месте - асинхронно запросить модуль и вернуть Promise разрешающийся в объект с экспортируемыми модулем значениями.

Как работать с асинхронными операциями - опять же - тебе самому разбираться.
__________________
29375, 35
Ответить с цитированием
  #18 (permalink)  
Старый 20.07.2022, 05:02
Аспирант
Отправить личное сообщение для noveek Посмотреть профиль Найти все сообщения от noveek
 
Регистрация: 09.06.2017
Сообщений: 40

Сообщение от Aetae Посмотреть сообщение
Хз, если тебе пишет что незя использовать import - это одно, значит надо заставить твою хрень как-то воспринимать скрипт как модуль, консольная версия chakracore при беглом взгляде по issue вроде может это с параметром -es6module, как оный задать в твоей приблуде - хз, сам смотри.

Если же у тебя нормально запускаются скрипты с import - вопросы иной:
import "file.js"; в начале файла - импортировать простой скрипт(не модуль) в начале модуля.
import some from "file.js"; в начале файла - импортировать конкретное экспортированаое начение из модуля.
import("file.js") в любом месте - асинхронно запросить модуль и вернуть Promise разрешающийся в объект с экспортируемыми модулем значениями.

Как работать с асинхронными операциями - опять же - тебе самому разбираться.
Жалко что нельзя напрямую из .js это гораздо удобнее, но я решил грузить в stringlist из Delphi работает, но есть проблемы такие как:
Message: 'window' is not defined

Я понимаю что объект пустой так как я запускаю не через браузер, а вот чем заменить не понимаю пока:
Memo1.Lines.text:=StringReplace(Memo1.Lines.text, 'window', 'Object',[rfReplaceAll, rfIgnoreCase]);
Строка в скрипте например так идёт:
var hasStrongCrat = 'crat' in window && window['crat'] !== null;

Последний раз редактировалось noveek, 20.07.2022 в 05:14.
Ответить с цитированием
  #19 (permalink)  
Старый 20.07.2022, 05:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

this / global
Если и этого нет, то можно в начале самому задать и не париться особо: window = {};

Цитата:
Жалко что нельзя напрямую из .js
Вообще, уверен, что можно. Только reference на эту шляпу с полпинка не нагугливается, а ставить чисто ради тебя delphi я не буду, уж извини.)
__________________
29375, 35

Последний раз редактировалось Aetae, 20.07.2022 в 05:58.
Ответить с цитированием
  #20 (permalink)  
Старый 20.07.2022, 06:24
Аспирант
Отправить личное сообщение для noveek Посмотреть профиль Найти все сообщения от noveek
 
Регистрация: 09.06.2017
Сообщений: 40

Сообщение от Aetae Посмотреть сообщение
this / global
Если и этого нет, то можно в начале самому задать и не париться особо: window = {};


Вообще, уверен, что можно. Только reference на эту шляпу с полпинка не нагугливается, а ставить чисто ради тебя delphi я не буду, уж извини.)
Там есть Демо скомпилированное уже необязательно дельфи ставить =)
https://www.winsoft.sk/download/jsenginedemo.zip там работает так просто в окно вписываешь скрипт нажимаешь кнопку Run =)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг массива и обработка данных в JS коде. Как пройти ошибку? mik888em Events/DOM/Window 1 18.04.2022 00:25
Как совместить данные php с js? deman1 Javascript под браузер 4 29.08.2021 20:39
Как перебрать массив в JS? AnteFil Элементы интерфейса 10 03.08.2020 21:50
Как объединить несколько js файлов в один? Fankrai Элементы интерфейса 0 03.06.2020 09:49
Как сделать выполнение одного JS после выполнения другого vita1ii Events/DOM/Window 2 11.01.2013 18:52