You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS路由运行报错:Unknown provider: $sceProvider <- $sce <- $route <- ngViewDirective

搞定AngularJS路由错误:Unknown provider: $sceProvider <- $sce <- $route <- ngViewDirective

嘿,这个错误我太熟悉了!问题出在你用的AngularJS 1.0.8版本上——$sce(Strict Contextual Escaping)这个服务是AngularJS 1.2及以后才内置到核心框架里的,1.0.x系列根本没有原生的$sceProvider和$sce服务。当路由模块试图依赖它们时,自然就找不到对应的提供者,报错也就理所当然了。

给你两个靠谱的解决方案,按需选择:

方案一:升级AngularJS版本(强烈推荐)

直接把AngularJS的引用升级到1.2及以上的稳定版本,比如1.2.32(这个版本兼容性很好,很多老项目升级都会选它)。升级后$sce会自动成为核心服务,路由的依赖问题直接解决。修改你的脚本引用:

<script src="https://code.angularjs.org/1.2.32/angular.js"></script>
<script src="https://code.angularjs.org/1.2.32/angular-route.js"></script>

⚠️ 注意:1.2+版本的路由是独立模块,所以你的app定义必须声明依赖ngRoute,比如:

var app = angular.module('routeApp', ['ngRoute']);

方案二:在1.0.8里手动补全依赖(仅当必须保留旧版本时用)

如果因为项目限制没法升级,那你得引入ngSanitize模块——1.0.x里和内容安全相关的功能都在这个模块里,它能提供路由需要的依赖。步骤如下:

  1. 引入和1.0.8版本匹配的angular-sanitize.js脚本:
<script src="https://code.angularjs.org/1.0.8/angular-sanitize.js"></script>
  1. 在你的app模块里声明依赖ngSanitize:
var app = angular.module('routeApp', ['ngSanitize']);

不过说实话,这个方案只是权宜之计,1.0.8的路由和sanitize配合可能会有一些小坑,能升级还是尽量升级。

最后再检查下你的路由配置语法,确保和对应版本匹配,比如1.0.x的$routeProvider用法和1.2+差异不大,但细节上还是要注意哦!

内容的提问来源于stack exchange,提问作者Harsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:17:23