Javascript 库无法在设备上运行
Javascript library not working on Device
我正在使用 BigNumber library of MikeMcl to handle my needs for big numbers. I use this library in an Ionic/Angular project。
如 Github 所述,安装和使用此库的方法是在 html 中包含一个脚本标签:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title></title>
<!-- compiled css output -->
<link href="css/ionic.app.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<!-- ionic/angularjs js -->
<script src="lib/ionic/js/ionic.bundle.min.js"></script>
<!-- cordova script (this will be a 404 during development) -->
<script src="lib/ngCordova/dist/ng-cordova.min.js"></script>
<script src="cordova.js"></script>
<!-- ********* BIGNUMBER library ********* -->
<script src='lib/bignumber.js/bignumber.min.js'></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/services.js"></script>
</head>
<body ng-app="starter">
<ion-nav-view></ion-nav-view>
</body>
</html>
现在在我的代码中,我可以使用这个库,例如:
x = new BigNumber(123.4567)
y = BigNumber('123456.7e-3')
z = new BigNumber(x)
x.equals(y) && y.equals(z) && x.equals(z) // true
我对此进行了测试,它在 Chrome 和 Safari(甚至在设备上)上运行良好。
但是当我使用 Phonegap Build 在 phone、 上安装该应用程序时,该应用程序不再工作(我通过删除我的代码中的 BigNumber 语法)。此外,应用程序中的 Angular 只是崩溃并显示 {{variableName}}
并且没有任何工作。
因为我在云环境中开发,所以我确实尝试在 mac 上使用 Safari 开发者调试控制台调试应用程序(通过将我的 phone 和 USB 插入 mac 然后在 Safari 中启用开发者工具)。
但是,除一个错误外,没有发现任何错误:
file not found: "path/to/ionic/lib/js/angular.min.js.map" 404
但是this is not the cause of the problem.
这是怎么回事?我怎样才能在我的设备上继续使用这个 javascript 库?
@JohnAndrews,
如果这是您的代码的范围,它缺少 deviceready 侦听器。在 cordova/phonegap 上,您通常不能做任何事情,直到您收到 deviceready 事件。所以,这是我唯一能想到的,你能添加一个 function onDeviceReady() {}
看看是否能解决你的问题吗?
哦,当然,请确保您 运行 在此事件之后进行操作。
我刚刚测试了你的代码,但它不起作用,因为当你创建 y 变量时,你没有使用 new 这个词。
这是我使用过的代码并且有效
x = new BigNumber(123.4567)
y = new BigNumber('123456.7e-3')
z = new BigNumber(x)
alert( x.equals(y) && y.equals(z) && x.equals(z));// I get true
找到解决方案。如果您还遇到 javascript 库无法在您的设备上运行,但在浏览器中可以运行,那么此答案可能会对您有所帮助。
问题发生在我 运行 npm install
安装软件包时,它没有正确更新我的 .git 依赖项。发生的事情是,每次我通过 Github 和 Phonegap Build 打包我的应用程序时,都没有考虑到 BigNumber 的文件夹。所以基本上,文件 bignumber.js
在应用程序中不可用,这就是它不起作用的原因。
我通过将所有文件从 BigNumber 文件夹复制到一个新的自定义文件夹来解决它。
这里有一个相关问题:Git not pushing all files and folders
我正在使用 BigNumber library of MikeMcl to handle my needs for big numbers. I use this library in an Ionic/Angular project。
如 Github 所述,安装和使用此库的方法是在 html 中包含一个脚本标签:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title></title>
<!-- compiled css output -->
<link href="css/ionic.app.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<!-- ionic/angularjs js -->
<script src="lib/ionic/js/ionic.bundle.min.js"></script>
<!-- cordova script (this will be a 404 during development) -->
<script src="lib/ngCordova/dist/ng-cordova.min.js"></script>
<script src="cordova.js"></script>
<!-- ********* BIGNUMBER library ********* -->
<script src='lib/bignumber.js/bignumber.min.js'></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/services.js"></script>
</head>
<body ng-app="starter">
<ion-nav-view></ion-nav-view>
</body>
</html>
现在在我的代码中,我可以使用这个库,例如:
x = new BigNumber(123.4567)
y = BigNumber('123456.7e-3')
z = new BigNumber(x)
x.equals(y) && y.equals(z) && x.equals(z) // true
我对此进行了测试,它在 Chrome 和 Safari(甚至在设备上)上运行良好。
但是当我使用 Phonegap Build 在 phone、 上安装该应用程序时,该应用程序不再工作(我通过删除我的代码中的 BigNumber 语法)。此外,应用程序中的 Angular 只是崩溃并显示 {{variableName}}
并且没有任何工作。
因为我在云环境中开发,所以我确实尝试在 mac 上使用 Safari 开发者调试控制台调试应用程序(通过将我的 phone 和 USB 插入 mac 然后在 Safari 中启用开发者工具)。
但是,除一个错误外,没有发现任何错误:
file not found: "path/to/ionic/lib/js/angular.min.js.map" 404
但是this is not the cause of the problem.
这是怎么回事?我怎样才能在我的设备上继续使用这个 javascript 库?
@JohnAndrews,
如果这是您的代码的范围,它缺少 deviceready 侦听器。在 cordova/phonegap 上,您通常不能做任何事情,直到您收到 deviceready 事件。所以,这是我唯一能想到的,你能添加一个 function onDeviceReady() {}
看看是否能解决你的问题吗?
哦,当然,请确保您 运行 在此事件之后进行操作。
我刚刚测试了你的代码,但它不起作用,因为当你创建 y 变量时,你没有使用 new 这个词。
这是我使用过的代码并且有效
x = new BigNumber(123.4567)
y = new BigNumber('123456.7e-3')
z = new BigNumber(x)
alert( x.equals(y) && y.equals(z) && x.equals(z));// I get true
找到解决方案。如果您还遇到 javascript 库无法在您的设备上运行,但在浏览器中可以运行,那么此答案可能会对您有所帮助。
问题发生在我 运行 npm install
安装软件包时,它没有正确更新我的 .git 依赖项。发生的事情是,每次我通过 Github 和 Phonegap Build 打包我的应用程序时,都没有考虑到 BigNumber 的文件夹。所以基本上,文件 bignumber.js
在应用程序中不可用,这就是它不起作用的原因。
我通过将所有文件从 BigNumber 文件夹复制到一个新的自定义文件夹来解决它。
这里有一个相关问题:Git not pushing all files and folders