这是我一直遇到的一个奇怪的问题。我将我在本地构建的应用程序移动到了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开发环境。
如果有人可以指示我如何让/#/恢复正常,因为它弄乱了我的路由。现在我的链接都没有加载。
提前致谢。
答案 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>