2014-12-05 61 views
2

我想在我的Qt-Creator项目中使用AWS SDK(https://sdk.amazonaws.com/js/aws-sdk-2.0.30.js),目的是将图像上传到我的S3存储桶。从QML/Javascript访问Amazon AWS服务

我有复制粘贴的JavaScript上面的文件名为awsSdk.js并没有在我的main.qml文件中的以下内容:

// main.qml 
import QtQuick 2.3 
import QtQuick.Window 2.2 

import "jsTest.js" as JsTest 
import "awsSdk.js" as AWSSdk 

Window { 
visible: true 
width: 360 
height: 360 

Rectangle { 
    width: 360 
    height: 360 
    color: "white" 
    Text { 
     id: txt 
     anchors.centerIn: parent 

     text: "Counter" 
     color: "Blue" 

    } 
    MouseArea { 
     x: 0 
     y: 0 
     anchors.fill: parent 
     onClicked: { 
      if (JsTest.x>=20) { 
       console.log("Have a nice day :)"); 
       Qt.quit(); 
      } 
      else 
       txt.text = JsTest.jsTest(); 
     } 
    } 
} 
} 

我可以导入jsTest.js文件完美。但是,当我尝试做awsSdk.js我碰到下面的错误是一样的:

QQmlApplicationEngine failed to load component 
qrc:/main.qml:8 Script qrc:/awsSdk.js unavailable 
qrc:/awsSdk.js:6023 Expected token `identifier' 

源代码jsTest.js:

// jsTest.js 
var x=0; 
function jsTest() 
{ 
    x++; 
    return "Counter : "+x+""; 
} 

我错过了什么?您是否有另一个建议让我仅使用QML/Javascript从Qt项目上传文件到AWS S3?

+0

我不熟悉QT也不QML但为什么复制/粘贴和风险引入错误?您不能保存AWS SDK JS并从您的导入语句中引用文件:将“lib/js/aws-sdk-2.0.30.js”导入为AWSSDK? – 2014-12-05 13:48:26

+0

嗨@SébastienStormacq,我试过了你的建议,但没有成功。仍然给了我同样的错误。谢谢 – 2014-12-05 15:07:54

+0

我不知道QT/QML足以帮助你,对不起。我只是建议采用以下调试方法:1请记住,浏览器JS SDK旨在用于浏览器。我不知道QT执行环境:它模拟一个完整的浏览器并提供对浏览器的暴露对象的访问吗? 2 /不使用缩小版本的SDK,而是使用纯文本版本,更易于调试(https://github.com/aws/aws-sdk-js/tree/master/dist)。注意错误的行号并查看源代码以找到可能的解释 – 2014-12-05 15:18:49

回答

0

Answered by a question edit - converted to a community wiki.

的OP写道:

It's solved now. For some reason, in qml.qrc was missing the pointer to the file. Added it manually and now it is working.

Content of qml.qrc file:

<RCC> 
    <qresource prefix="/"> 
    <file>main.qml</file> 
    <file>jsTest.js</file> 
    <file>jQuery.js</file> 
    <file>aws-sdk-2.0.30.js</file> 
    </qresource> 
</RCC>