Phonegap Build app无法找到Javascript文件

时间:2016-11-07 15:47:38

标签: javascript phonegap-plugins phonegap-build

我去年使用Phonegap Build的经历有些生疏,我遇到了问题。

这是config.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="uk.co.example.app" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:gap="http://phonegap.com/ns/1.0">
    <name>Example App</name>
    <description>
        The Example app
    </description>
    <author href="http://www.example.co.uk/" email="user@example.co.uk">
        Example User 
    </author>
    <content src="index.html" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="android-minSdkVersion" value="14" />
    <plugin name="cordova-plugin-device" source="npm" spec="~1.1.1" />
    <plugin name="cordova-plugin-dialogs" source="npm" spec="~1.2.0" />
    <plugin name="cordova-plugin-file-transfer" source="npm" spec="~1.5.0" />
    <plugin name="cordova-plugin-network-information" source="npm" spec="~1.2.0" />
    <plugin name="cordova-plugin-whitelist" source="npm" spec="~1.2.1" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="file://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
</widget>

www/index.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
        <meta http-equiv="Content-Security-Policy" content="default-src * 'self' 'unsafe-inline' 'unsafe-eval'; script-src * 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *" />
        <title>Example App</title>
        <link href="css/style.css" rel="stylesheet" type="text/css">
        <base href="/">
    </head>
    <body>
        <div>
            <div ng-app="app" ng-csp ng-cloak ng-class="{'reverse':reverse}">
                <div loadingspinner id="loadingspinner"></div>
                <div ng-view></div>
            </div>
        </div>
    </body>
    <script type="text/javascript" src="js/bundle.js"></script>
    <script type="text/javascript" src="cordova.js"></script>
</html>

文件结构如下所示:

config.xml
www/
   index.html
   css/
       style.css
   js/
       bundle.js

现在,CSS文件加载并正常工作,但Javascript文件没有。如果我设置了一些JS inline,那就行了,但是我尝试使用的任何外部Javascript,无论多么小或简单,都不起作用,即使它只是触发警报。但是,它在Web浏览器中工作正常,我相信路径是正确的 - 该文件位于www/js/bundle.js

我认为这与内容安全策略和白名单插件有关,因为自从我上次使用Phonegap Build开发应用程序以来,它已经被引入,看起来相当合乎逻辑,但我看不出问题是什么。远程调试器不显示任何错误,因此我不知道发生了什么。谁能看到我出错的地方?

如果有帮助,这是在Android上。我没有在iOS上尝试过,因为我没有iOS设备,所以它可能是特定于平台的。

2 个答案:

答案 0 :(得分:1)

从代码中删除下一个元标记,所有元标记都可以使用:

<meta http-equiv="Content-Security-Policy" content="default-src * 'self' 'unsafe-inline' 'unsafe-eval'; script-src * 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *" />

答案 1 :(得分:0)

将body脚本移动到body标签内:

<script type="text/javascript" src="js/bundle.js"></script>
    <script type="text/javascript" src="cordova.js"></script>
    </body>