使用gulp-angular-templatecache将HTML合并到template.js中,得到$injector

Using gulp-angular-templatecache to combine HTML into template.js, getting $injector Module Unavailable error

本文关键字:得到 injector js template gulp-angular-templatecache HTML 合并 使用      更新时间:2023-09-26

我使用gulp-angular-templatecache,抓取我所有的部分HTML模板文件,并将它们组合成一个template.js文件。

第一部分我能够完成,我可以运行我的Gulp任务,它创建templates/templates.js

templates.js:

angular.module("templates").run(["$templateCache", function($templateCache) {$templateCache.put("beta.html","<div class='"login-container'" ng-controller='"BetaCtrl as beta'">'n    <section class='"login-form-block'">'n        <header>'n            <div class='"tickertags-logo-big'"></div>'n            <h1>Welcome to the TickerTags beta! Enter the email address where your beta invitation was sent below. We will send you an email with your temporary password.</h1>'n        </header>'n'n        <div class='"login-form'">'n'n            <form name='"loginForm'" ng-submit='"beta.beta(credentials)'" novalidate>'n'n                <div class='"login-alert'" ng-class='"{ hideLoginMsg: beta.hideMessage == true }'">{{ beta.message }}</div>'n'n                <input type='"email'"'n                       id='"email'"'n                       placeholder='"Email'"'n                       name='"email'"'n                       ng-model='"credentials.email'">'n'n                <button type='"submit'" class='"login-btn'">Email Password</button>'n            </form>'n'n            <p class='"terms-of-use-line'">By signing up you agree to our <a href='"assets/files/tickertags-terms-of-use.pdf'" target='"_blank'">Terms of Use</a> and <a href='"assets/files/privacypolicy.pdf'" target='"_blank'">Privacy Policy</a></p>'n'n        </div>'n    </section>'n</div>'n");

现在我已经在我的索引中正确地链接到templates.js文件:

<script src="templates/templates.js"></script> <<--
<script src="authentication/authFactory.js"></script>
<script src="help/helpController.js"></script>
etc...

我已经将它包含在主应用模块中:

var app = angular.module('tickertags', [
    'ui.router',
    'templates',  // <--
    'authFactory',
    'betaController',
    'passResetController',
    'loginController',
    'apiFactory',
    'scopeFactory',
    etc...

仍然得到这个错误:https://docs.angularjs.org/error/$喷射器/nomod ? p0 =模板

错误:美元注入器:nomod模块不可用

知道我为什么会看到这个吗?

因为该模块没有正确声明。

你需要在你的应用程序的某个地方声明模板模块,像这样:angular.module("templates", []);或使用options.standalone = true在gulp插件

来自文档:

注意:这个插件默认不会创建一个新的AngularJS模块,而是使用一个名为templates的模块。如果您想创建一个新模块,请设置选项。