【问题标题】:Error on heroku deployment in Rails + Angular. ui-router在 Rails + Angular 中部署 heroku 时出错。 ui路由器
【发布时间】:2017-11-14 16:07:03
【问题描述】:

Rails 后端。角前端。使用 angular-ui-router。在本地,它工作正常。但是当它部署在heroku上时,它给出了这个错误。所有依赖项似乎都已正确下载。我需要帮助查看此错误的含义。

application.js:

//= require jquery
//= require jquery_ujs
//= require angular/angular
//= require angular-ui-router/release/angular-ui-router

//= require bootstrap
//= require_self
//= require_tree .

angular
  .module('maphack', ['ui.router'])
  .config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
    $stateProvider
      .state('home', {
        url: '/',
        component: 'homePage'
      })

    // default fall back route
    $urlRouterProvider.otherwise('/');

    // enable HTML5 Mode for SEO
    $locationProvider.html5Mode({
      enabled: true,
      requireBase: false
    });
});

控制台上的错误消息:

application-118d41a….js:4 Uncaught Error: [$injector:modulerr] Failed to 
instantiate module XXXXX due to:
Error: [$injector:unpr] Unknown provider: t
http://errors.angularjs.org/1.6.4/$injector/unpr?p0=t

【问题讨论】:

    标签: ruby-on-rails angularjs heroku angular-ui-router angularjs-injector


    【解决方案1】:

    在我看来,罪魁祸首是 JavaScript 缩小。 Angular 以这种方式注入的模块通常会被 JavaScript 压缩器混淆。

    一种可能的解决方案是在声明依赖项时使用另一种语法。改变这个:

    .config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
    

    到这里:

    .config(["$stateProvider", "$urlRouterProvider", "$locationProvider", function ($stateProvider, $urlRouterProvider, $locationProvider]) {
    

    当您在字符串中声明依赖项时,后者不易受到 JS 缩小的影响,而 Angular 足够聪明,可以选择这些并注入到您的配置中。

    Ready to learn more?

    【讨论】:

    • 感谢您的回复。我正在尝试在 heroku 上部署,它说语法错误。
    • @SWKING - 请使用错误日志更新您的问题。
    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 2021-01-19
    • 2017-11-25
    • 1970-01-01
    • 2015-04-07
    • 2013-02-02
    • 1970-01-01
    • 2019-06-15
    相关资源
    最近更新 更多