Как импортировать файл JavaScript в рабочий скрипт qml

Я создаю приложение в qml, где я хочу скачать данные из Интернета. Чтобы избежать блокировки основного потока, я создал файл WorkerScript. Это прекрасно работает, но мне нужно абстрагировать определенные части (такие как авторизация, правильный заголовок и т. Д.) От функций общего назначения.

К сожалению, я не нашел способа импортировать файл js в файл js, который служит рабочим потоком. ".import" вызывает синтаксическую ошибку.

Как мне этого добиться?

Спасибо.

Редактировать:

Это соответствующая часть из файла qml:

Page {
    WorkerScript {
          id: myWorker
          source: Qt.resolvedUrl("loadDetails.js")
          onMessage:  {}
      }
}

И это loadDetails.js:

.import "jsonrpc.js" as Jrpc
WorkerScript.onMessage = function(message) {
    // This is where I want to call functions from included file
}

2 ответа

Решение

Смотрите документацию, предоставленную Олегом:

Рабочий скрипт не может использовать синтаксис.import.

Я полагаю, вы пропустили квалификатор в операторе импорта. Правильный синтаксис:

.import "filename.js" as Qualifier

Смотрите документацию Qt для вашего случая.

Это скорее мета-ответ, так как он также адресован другим респондентам.

Документация Qt временами может быть двусмысленной. В документации WorkerScript говорится, что:

Рабочие скрипты, являющиеся простыми источниками JavaScript, не могут использовать синтаксис.import. Скрипты, являющиеся модулями ECMAScript, могут свободно использовать операторы импорта и экспорта.

Только вот, похоже, это не так. Я перепробовал все виды импорта:

// example.mjs
.import "test.mjs" as Test
.import * as Test from "test.mjs";
import "test.mjs" as Test
import * as Test from "test.mjs";
import { test } from "test.mjs"

Итак, очевидно, что это не работает, но в документации указано, что это работает - и что это не...

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