Использование библиотеки ParseServer Backend JS в QML - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь использовать Javascrip-библиотеку браузера Parse здесь https://unpkg.com/parse/dist/parse.min.js в QML (Qt 5.14).

Мой файл QML выглядит так:

import QtQuick 2.12
import QtQuick.Window 2.12
import "parse.js" as Parse

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Component.onCompleted: {
    Parse.serverURL = "https://parseapi.back4app.com"; // This is your Server URL
    Parse.initialize("BCrUQVkk80pCdeImSXoKXL5ZCtyyEZwbN7mAb11f", /* This is your Application ID */ "4wPYRKbpTJeCdmFNaS31AiQZ8344aaYubk6Uo8VW");// This is your Javascript key
    }
}

Взято из https://dashboard.back4app.com/apidocs?javascript#initializing -parse-sdk

Однако вывод QML дает мне ошибку typeError в библиотеке и говорит, что я не могу записать в глобальное свойство:

qrc:/parse.js:13: TypeError: Type error
qrc:/main.qml:12: Error: Invalid write to global property "serverURL"

Любая помощь приветствуется - мне не очень хочется реализовывать все вызовы самостоятельно с помощью XmlHttpRequest.

1 Ответ

0 голосов
/ 06 мая 2020

Хотя QML совместим с ES7, у него нет такой же Javascript среды выполнения, как у веб-браузеров. Например, нет классов / объектов Window или Document, а также нет защиты от разных источников. Для получения дополнительной информации о том, что поддерживается, см .:

https://doc.qt.io/qt-5/qtqml-javascript-functionlist.html

Кроме того, в отношении вашего сообщения об ошибке, посмотрите, как здесь обрабатывается глобальная область действия javascript :

https://doc.qt.io/qt-5/qtqml-javascript-hostenvironment.html

и как Javascript импорт обычно работает:

https://doc.qt.io/qt-5/qtqml-javascript-imports.html

В этом конкретном случае вы хотите вместо этого ссылаться на него следующим образом:

Parse.Parse.serverURL = "https://parseapi.back4app.com";

Однако этот JS файл, вероятно, будет иметь проблемы со средой QML, поскольку он, вероятно, ищет в первую очередь Node.js или совместимый с браузером вид среды Javascript.

Лучше всего использовать несжатую версию здесь: https://unpkg.com/parse@2.13.0 / dist / parse. js

И посмотрите, сможете ли вы перенести его на QML, исправив код, который зависит от браузера или возможностей только для узла. Я проделывал это несколько раз с некоторыми другими пакетами, и обычно требуется разумное количество усилий, чтобы заставить его работать.

...