QWebEnginePage es6 modules
-
Can the QWebEnginePage load es6 Modules? When I try to load a es6 module I get the following error, "Failed to load module script: The server responded with a non-JavaScript MIME type of "". Strict MIME type checking is enforced for module scripts per HTML spec".
I tried to intercept the request via QWebEngineUrlRequestInterceptor::interceptRequest and setting the html header with 'Content-type: application/javascript'
I'm looking for a solution where I don't have to use a local web server. Any suggestions?
-
I figured out a solution. Instead of loading files using the file:/// protocol, I used a custom scheme. I then used QWebEngineUrlSchemeHandler:requestStarted to open the files and attach them to QWebEngineUrlRequestJob.
void UrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob* request) { QByteArray requestMethod = request->requestMethod(); QUrl requestUrl = request->requestUrl(); QString requestPath = requestUrl.path(); QFile* file = new QFile(requestPath); file->setParent(request); Z_VERIFY(connect(request, &QObject::destroyed, file, &QFile::deleteLater)); if (!file->exists() || file->size() == 0) { request->fail(QWebEngineUrlRequestJob::UrlNotFound); return; } QFileInfo fileInfo = QFileInfo(*file); QMimeDatabase mimeDatabase; QMimeType mimeType = mimeDatabase.mimeTypeForFile(fileInfo); request->reply(QUrl(mimeType.name()).toEncoded(), file); }