在过去2天内无处不在(并浏览各种网站上的过去的论坛主题)并且没有解决方案之后,我作为最后的手段在这里发布。我知道每个人都很忙但是这让我很伤心。
我已尝试过一切可能,从多次创建应用程序,一次添加一个库,然后运行并确保它正常工作,然后添加另一个库,然后运行应用程序......
一切都很好,直到我添加" cordova-plugin-ms-azure-mobile-apps "在我的应用程序中我使用以下命令:
离子插件添加cordova-plugin-ms-azure-mobile-apps --save
这会在我的config.xml中添加一个条目。
然后当我尝试引用它来导入" WindowsAzure"将它放入我的TypeScript文件中,intelisense不会将该库作为一个选项,因为它将为其他库提供(如ionic-native,rxjs,momentjs等)。我把它添加到" declarations.d.ts"同样但这也没有帮助。但我仍然继续手动导入它,如下所示:
从' cordova-plugin-ms-azure-mobile-apps&#39 ;;
导入{WindowsAzure}VS Code并没有抱怨并且"离子服务"我运行命令时也不会抱怨(在构建代码时)。但是,当应用尝试在浏览器(Chrome)中启动时,我收到运行时错误,说明无法找到模块" cordova-plugin-ms-azure-mobile-apps" 。
为了确保,我尝试使用"离子运行android"在我连接的Android手机上运行它。在手机上,它也会尝试启动应用程序(我按照预期的那样获得启动画面)然后屏幕全白并保持原样。将Android手机连接到笔记本电脑后,我尝试在Chrome中进行检查。它显示了相同的" 无法找到模块" cordova-plugin-ms-azure-mobile-apps "错误为" 不道德错误"。 请注意,我在手机上运行应用程序之前添加(并在代码中使用)这个库,它就像一个魅力。
为了尝试其他方式,我使用以下命令将浏览器添加为平台:
离子平台添加浏览器
然后使用以下命令运行应用程序:
离子运行浏览器
同样的行为。它没有发布。
要尝试更多,我使用命令添加了库:
npm install cordova-plugin-ms-azure-mobile-apps --save
然后它被添加到我的应用程序的package.json中"依赖关系"部分。然后,当我尝试在我的TypeScript文件中引用它时," import"我把这个库作为InteliSense选项。但最终结果仍然是一样的。我仍然得到运行时错误"找不到模块cordova-plugin-ms-azure-mobile-apps"在Chrome浏览器和Android手机上的白色空白屏幕。
如果您能帮助我解决这个问题,我将非常感谢。我迫切需要帮助,因为我已经用尽了所有选择和所有思考能力。 :(
P.S。 - 只有当我尝试使用Ionic 2应用程序时才会发生这种情况。否则,当我在一个单独的项目中使用HTML / JavaScript / Cordova / Node.js时,它可以正常工作。 :皱眉:
谢谢。
答案 0 :(得分:3)
最后,让它工作!感谢Microsoft的支持!
我认为,在TypeScript世界中,这不是最好的解决方案,但这是使其发挥作用的唯一方法。
所以,我所要做的只是使用" WindowsAzure "名称空间来自" cordova-plugin-ms-azure-mobile-apps "作为常规普通的旧JavaScript变量,而不是执行" 导入"。
即,不要将WindowsAzure导入为:
从' cordova-plugin-ms-azure-mobile-apps&#39 ;;
导入{WindowsAzure}在所有" 导入"之后,我将其声明为常规JavaScript对象。之前" @Component " class和/或" @Injectable "服务/提供者类,如:
```
import { ... } from '...';
declare var WindowsAzure: any;
@Injectable
export class ... {
client: any;
....
constructor or yourMethod(...) {
this.client = new WindowsAzure.MobileServiceClient('http://YourAzureMobileApp.azurewebsites.net');
}
....
....
//Your logic
}
```
所以,显然,在Ionic 2中,如果您的第三方图书馆没有被常规" 导入"声明然后你应该尝试以旧的JavaScript方式使用它。
这是一个简单的解决方案,我最终花了两天时间。 :(
希望这可以帮助别人节省时间。
答案 1 :(得分:0)
导入第3方cordova插件,该插件未包含在Ionic Native
。
试试这个: 检查答案here。
如果声明cordova不起作用: 做
ionic plugin add cordova-plugin-ms-azure-mobile-apps --save
IT应该并且正在正确安装插件。
检查
中的 plugin.xml 文件插件/科尔多瓦-插件-MS-天青-移动应用 应该有一个条目:
<js-module src="src_of_js" name="some_name">
<clobbers target="global_object_name" /> </js-module>
通常,clobbers目标名称是加载所有cordova插件时用于插件的全局对象名称。(这通常是cordova.plugins.somename) 打字稿通常会抱怨,因为它在转换时无法找到全局变量。
只是做:
declare var global_object:any;
在您的文件中的所有其他导入之后并使用该插件。
答案 2 :(得分:0)
每当您添加第三方cordova插件时,通常会将新对象添加到窗口对象。而且您无需导入任何内容即可使用这些对象。 对于WindowsAzure插件也是如此。
在项目中添加'cordova-plugin-ms-azure-mobile-apps'后,您可以使用window.WindowsAzure
来调用其功能。
注意:如果编辑或构建过程抱怨window
变量,那么您可以在导入语句之后在ts文件中定义它,如下所示:
声明var window:any;
答案 3 :(得分:0)
以下是在离子应用中添加和使用cordova-plugin-ms-azure-mobile-apps插件的步骤。
# Create a hello world ionic v2 project
ionic start ionicv2 --v2
cd ionicv2
# Add the Cordova plugin
ionic plugin add cordova-plugin-ms-azure-mobile-apps
# Add the following 3 lines to app.component.ts
declare var WindowsAzure: any;
var client = new WindowsAzure.MobileServiceClient("https://yoursitename.azurewebsites.net");
window.alert("MobileServiceClient instance: " + client);
# Build and run for browser
ionic platform add browser
ionic run browser