Javascript ionic framework TypeError:无法读取属性';udp';未定义的

Javascript ionic framework TypeError:无法读取属性';udp';未定义的,javascript,cordova,ionic-framework,udp,Javascript,Cordova,Ionic Framework,Udp,cordova插件chrome apps sockets udp已安装,但在ionic框架内使用时仍会出错(在笔记本电脑上测试-ionic serve) 我创建了2个文件index.html和app.js,如下所示: index.html文件: <!DOCTYPE html> <html > <head> <meta charset="UTF-8"> <!-- below line to allow access to o

cordova插件chrome apps sockets udp已安装,但在ionic框架内使用时仍会出错(在笔记本电脑上测试-ionic serve)

我创建了2个文件index.html和app.js,如下所示:

index.html文件:

<!DOCTYPE html>
<html >
  <head>
    <meta charset="UTF-8">
    <!-- below line to allow access to outside website -->
   <meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src  'self' 'unsafe-inline' *; img-src 'self' data: *">
   <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
   <meta HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
   <meta HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
    <title>udpTest</title>
    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">   
    <link rel="stylesheet" href="css/style.css" media="screen, projection">
    <!-- ionic/angularjs js -->
    <script src="lib/ionic/js/ionic.bundle.js"></script>
    <!-- Before cordova.js -->
    <script src="lib/ngCordova/dist/ng-cordova.js"></script>

    <!-- cordova script (this will be a 404 during development) -->
    <script src="cordova.js"></script>

    <!-- your app's js -->
    <script src="js/app.js"></script>
  </head>
  <body ng-app="starter" ng-controller="AppCtrl">>

    <ion-pane>
  <ion-header-bar class="bar-stable">
    <h1 class="title">press key</h1>
  </ion-header-bar>
  <ion-content>
    <button class="button button-block button-balanced" ng-click="connect()">
      lock
    </button>
    <button class="button button-block button-assertive" ng-click="connect()">
      unlock
    </button>
  </ion-content>
</ion-pane>
  </body>
</html>

乌德普斯特
>
按键
锁
解锁
和app.js文件:

// Ionic Starter App

// angular.module is a global place for creating, registering and retrieving Angular modules
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html)
// the 2nd parameter is an array of 'requires'
angular.module('starter', ['ionic', 'ngCordova'])
//.factory('udpfact')
.controller('AppCtrl', function($scope, $ionicPlatform) {
  $ionicPlatform.ready(function() {
       $scope.connect = function() {
      var socketId;

      // Handle the "onReceive" event.
      var onReceive = function(info) {
        if (info.socketId !== socketId)
        return;
        console.log(info.data);
        };  

        // Create the Socket
chrome.sockets.udp.create({}, function(socketInfo) {
  socketId = socketInfo.socketId;
  // Setup event handler and bind socket.
  chrome.sockets.udp.onReceive.addListener(onReceive);
  console.log("Just checking.");
  chrome.sockets.udp.bind(socketId,
    '', 5000, function(result) {
      if (result < 0) {
        console.log("Error binding socket.");
        return;
      }
      var arrayBuffer = new ArrayBuffer(20);
      var dv = new DataView(arrayBuffer,0);
      dv.setUint16(0,0);
      dv.setUint16(1,12);
      dv.setUint16(2,0);
      dv.setUint16(3,0);
      dv.setUint32(4,0);
      dv.setUint32(5,55555);
      dv.setUint32(6,0);
      console.log("here");
      chrome.sockets.udp.send(socketId, arrayBuffer,
        '255.255.255.255', 5000, function(sendInfo) {
          console.log("sent " + sendInfo.bytesSent);
      });
  });
});
  };
})
});
//Ionic Starter应用程序
//angular.module是创建、注册和检索angular模块的全局位置
//“starter”是此角度模块示例的名称(也在index.html中的属性中设置)
//第二个参数是“requires”的数组
角度模块('starter'、['IONAL'、'ngCordova']))
//.工厂(“udpfact”)
.controller('AppCtrl',函数($scope,$ionicPlatform){
$ionicPlatform.ready(函数(){
$scope.connect=function(){
var socketId;
//处理“onReceive”事件。
var onReceive=函数(信息){
如果(info.socketId!==socketId)
返回;
控制台日志(信息数据);
};  
//创建套接字
create({},函数(socketInfo){
socketId=socketInfo.socketId;
//设置事件处理程序和绑定套接字。
chrome.sockets.udp.onReceive.addListener(onReceive);
log(“只是检查一下”);
chrome.sockets.udp.bind(socketId,
'',5000,功能(结果){
如果(结果<0){
log(“错误绑定套接字”);
返回;
}
var arrayBuffer=新的arrayBuffer(20);
var dv=新数据视图(arrayBuffer,0);
dv.setUint16(0,0);
dv.setUint16(1,12);
dv.setUint16(2,0);
dv.setUint16(3,0);
dv.setUint32(4,0);
dv.setUint32(555555);
dv.setUint32(6,0);
console.log(“此处”);
chrome.sockets.udp.send(socketId、arrayBuffer、,
“255.255.255.255”,5000,函数(sendInfo){
console.log(“已发送”+sendInfo.bytesent);
});
});
});
};
})
});
我已经看到这是一个问题很多,但在没有平台,我找到了一个解决方案,这是工作。任何帮助或提示都将不胜感激。
谢谢

Cordova插件在浏览器中不起作用。您需要在模拟器或设备中进行测试

chrome.sockets.udp.create…
包装在一个块中,检查是否在cordova上。比如:


if(chrome.sockets.udp){……}
Cordova插件在浏览器中不工作。您需要在模拟器或设备中进行测试

chrome.sockets.udp.create…
包装在一个块中,检查是否在cordova上。比如:


if(chrome&&chrome.sockets&&chrome.sockets.udp){……}

做得更好:
if(chrome&&chrome.sockets&&chrome.sockets.udp){……}
。否则,您将有一个异常。在使用调试功能(Xcode&safari+iPhone)后,它会给出一个错误,即找不到chrome。我需要在某处引用谷歌吗?在其他地方,例如3djs,您需要指向index.html中的js文件。再次感谢。我不知道你到底想实现什么,但我猜在SafariEnd goal中不存在chrome.sockets,它是一款与我的Raspberry Pi通信的离子应用程序。由于树莓的本地主机名并不总是可访问的,我需要Pi的IP地址。这就是为什么我想让应用程序向网络(本地)发送UDP消息,以获取Pi的IP地址。通过这个,我可以在Pi上运行我的API,就像我过去使用Pi的本地名称所做的那样。我还将Ionic框架与一些D3J结合起来用于报告,然后我需要将这一行放到库中。我现在没有错过这个吗?最后我发现使用npm的问题没有正确安装,你需要sudo cordova插件添加cordova插件chrome apps sockets udpBetter来做:
if(chrome&&chrome.sockets&&chrome.sockets.udp){…}
。否则,您将有一个异常。在使用调试功能(Xcode&safari+iPhone)后,它会给出一个错误,即找不到chrome。我需要在某处引用谷歌吗?在其他地方,例如3djs,您需要指向index.html中的js文件。再次感谢。我不知道你到底想实现什么,但我猜在SafariEnd goal中不存在chrome.sockets,它是一款与我的Raspberry Pi通信的离子应用程序。由于树莓的本地主机名并不总是可访问的,我需要Pi的IP地址。这就是为什么我想让应用程序向网络(本地)发送UDP消息,以获取Pi的IP地址。通过这个,我可以在Pi上运行我的API,就像我过去使用Pi的本地名称所做的那样。我还将Ionic框架与一些D3J结合起来用于报告,然后我需要将这一行放到库中。我现在没有错过这个吗?最后我发现使用npm的问题是安装不正确,你需要sudo cordova plugin add cordova plugin chrome apps sockets udp