Angular app migration问题哈希到哈希哈希(/#/ to /!#/)

时间:2016-12-21 04:26:01

标签: javascript angularjs routing

这是我一直遇到的一个奇怪的问题。我将我在本地构建的应用程序移动到了cloud9,因此我可以通过浏览器在线进行所有开发。我不认为这是本地移动到云9。我有一个想法,它更多我缺少或已经过时的依赖。我不知道是否有办法检查这是否是问题。我不是真正的角度专家。这是我的依赖包package.json文件。

    {
  "name": "mean-app",
  "version": "1.0.0",
  "description": "MEAN stack application",
  "main": "app.js",
  "scripts": {
    "start": "node app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": ""
  },
  "keywords": [
    "mean"
  ],
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": ""
  },
  "homepage": "",
  "dependencies": {
    "angular": "^1.6.0",
    "angular-jwt": "^0.1.8",
    "angular-route": "^1.6.0",
    "bcrypt-nodejs": "0.0.3",
    "bluebird": "^3.4.6",
    "body-parser": "^1.15.2",
    "express": "^4.14.0",
    "jsonwebtoken": "^7.2.1",
    "mongodb": "^2.2.16",
    "mongoose": "^4.7.3",
    "purecss": "^0.6.1",
    "twilio": "^2.11.1"
  },
  "devDependencies": {
    "mocha": "^2.3.3"
  }
}

我不确定为什么现在我有/#!/一旦我重新加载这个文件并将我的其他文件移动到新的cloud9开发环境。

如果有人可以指示我如何让/#/恢复正常,因为它弄乱了我的路由。现在我的链接都没有加载。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您是否在将代码部署到云的同时升级了Angular的版本?从Angular 1.5.x到1.6.x的$ locationProvider中似乎有一个breaking change

Angular 1.6.0 specifies,位置提供商的默认前缀是爆炸。您可以通过将$ locationProvider注入应用程序的配置函数,然后调用$ locationProvider.hashPrefix("");

来更改此设置。

这是一支笔,上面有一个例子:http://codepen.io/mac5977/pen/aBMGGm?editors=1011

JS

(function(){
      'use strict';
       angular.module('app', ['ngRoute'])
          .config(configFxn);
       configFxn.$inject = ['$routeProvider', '$locationProvider'];
     function configFxn($routeProvider, $locationProvider){
       $locationProvider.hashPrefix("");

       $routeProvider.when('/', {
       template: '<h3>/Route</h3><br/><a ng-href="#/secondpage">Switch Route</a>'} )
          .when('/secondpage', {
          template: '<h3>/SecondPage Route</h3><br/><a ng-href="#/">Goto Other Route</a>'} );
  }
})();

<强> HTML

<div ng-app="app">
    <ng-view></ng-view>
</div>