使用 gulp-angular-templatecache 将 HTML 组合成 template.js,出现 $injector Module Unavailable 错误
Using gulp-angular-templatecache to combine HTML into template.js, getting $injector Module Unavailable error
我正在使用 gulp-angular-templatecache,获取我所有的部分 HTML
模板文件并将它们组合成 1 个 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/$injector/nomod?p0=模板
Error: $injector:nomod
Module Unavailable
我为什么会看到这个?
因为该模块没有正确声明。
您需要像这样在您的应用中的某处声明模板模块:angular.module("templates", []);
或者在 gulp 插件
中使用 options.standalone = true
来自文档:
Note: this plugin will not create a new AngularJS module by default, but use a module called templates. If you would like to create a new module, set options.standalone to true.
我正在使用 gulp-angular-templatecache,获取我所有的部分 HTML
模板文件并将它们组合成 1 个 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/$injector/nomod?p0=模板
Error: $injector:nomod Module Unavailable
我为什么会看到这个?
因为该模块没有正确声明。
您需要像这样在您的应用中的某处声明模板模块:angular.module("templates", []);
或者在 gulp 插件
options.standalone = true
来自文档:
Note: this plugin will not create a new AngularJS module by default, but use a module called templates. If you would like to create a new module, set options.standalone to true.