使用Javascript包含AngularJS库时出错

使用Javascript包含AngularJS库时出错,javascript,angularjs,Javascript,Angularjs,我正在加载angular库并检查该库是否已包含在脚本中 <body> <div ng-app="myApp"> {{1+1}} </div> <script type="text/javascript"> var angular; // load angular library if undefined if (typeof window.angular === 'undefined') {

我正在加载angular库并检查该库是否已包含在脚本中

<body>
    <div ng-app="myApp">
        {{1+1}}
    </div>

<script type="text/javascript">
    var angular;
    // load angular library if undefined
    if (typeof window.angular === 'undefined') {

        var script_tag = document.createElement('script');
        script_tag.type = 'text/javascript'; 
        script_tag.src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js";

        document.body.appendChild(script_tag);
        console.log(script_tag, 'angular load');

    } else {
        console.log('script found');
    }

</script>
//load angular script
<script type="text/javascript" src="widget-angular.js"></script>
</body>
我得到的错误是:

未捕获的TypeError:无法调用未定义的方法“module”

首先,我认为错误的原因是在小部件脚本之后加载了angular库。但我做了各种检查,它装载得很好。我不知道为什么它不识别“模块”。 如果我直接这样给图书馆打电话:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>

它起作用了。但我需要的结果是,它检查库是否已经包括在内。如果不是,则包括库脚本


提前谢谢你

您正在附加到将其放置在其他脚本标记之后的
body
中。因此,在您尝试访问
angular
之前,它不会被编译

可以使用
document.write()
document.head.appendChild(script\u标记)


通过在浏览器控制台/developer tools中检查实时html应该可以很容易地验证这一点,我不认为Angular在调用时被加载。小部件肯定是先加载的。您误解了控制台告诉您的内容。为什么需要此检查?通常像这样的检查是相反的,首先从googleapis静态请求,然后检查它是否正确加载,如果没有,然后从本地加载。你似乎在做相反的事。对我来说,这似乎是不必要的复杂性。我之所以这么做,是因为我希望能够在各种网站上使用它。如果其中一个网站已经加载了AngularJS库,我不想再次加载。它在控制台中显示的顺序首先是angular库,然后是widget-angular.js。如果我是console.log(script_标记);我看到
这很好。但它仍然显示了由于定义了
append
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>