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

使用generator-ngdoc生成gulp-angular文档时遇[$injector:nomod]错误

解决generator-ngdoc生成文档时[$injector:nomod]模块找不到的问题

我之前也碰到过一模一样的问题!这个错误本质是生成的文档页面没法正确加载你的appModule模块,大概率是文档环境没有引入项目的核心依赖或者模块定义文件。下面是我亲测有效的排查和解决步骤:

1. 检查dgeni配置的资源加载列表

首先要确保dgeni的配置文件(一般是docs.config.js这类文件)里,已经把Angular核心文件、你的appModule定义文件都加入到资源加载队列中。如果这些文件没被加载,文档页面的Angular环境自然找不到你的模块。

示例配置代码:

module.exports = function(config) {
  // 把项目依赖和核心文件加入文档资源
  config.prependToPackage('assets', [
    'bower_components/angular/angular.js', // Angular核心库
    'src/app/app.module.js', // 定义appModule的文件
    'src/app/**/*.js' // 项目所有组件、服务等文件(按需调整路径)
  ]);
};

2. 确认ngdoc注释的模块声明正确

检查你组件(指令、控制器、服务等)的ngdoc注释,确保@name字段里的模块名和实际项目的模块名完全一致,不能有拼写错误。

示例正确的注释:

/**
 * @ngdoc directive
 * @name appModule.directive:myCustomComponent
 * @description 自定义组件的功能描述
 */
angular.module('appModule').directive('myCustomComponent', function() {
  // 组件逻辑
});

3. 验证文档页面的脚本加载顺序

打开生成的docs文件夹里的组件页面源码,查看<script>标签的加载顺序:必须保证先加载Angular核心库,再加载appModule定义文件,最后加载各个组件/服务文件。

如果顺序不对,调整dgeni配置里assets数组的顺序——prependToPackage是按数组顺序依次添加资源的,排在前面的会先被加载。

4. 补充模块依赖的资源文件

如果你的appModule依赖了其他第三方模块(比如ui-router、ngResource),也要把这些依赖的JS文件加入到dgeni的assets列表中,否则appModule初始化时会因为找不到依赖模块而失败,最终也会触发[$injector:nomod]错误。

示例补充依赖后的配置:

config.prependToPackage('assets', [
  'bower_components/angular/angular.js',
  'bower_components/angular-ui-router/release/angular-ui-router.js', // 第三方依赖
  'src/app/app.module.js',
  'src/app/**/*.js'
]);

5. 清理缓存后重新生成文档

有时候旧的文档缓存会导致异常,先手动删除整个docs文件夹,再重新运行生成文档的gulp命令(比如gulp docs),确保生成的是全新的文档文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:25:05