在我的角度代码中,为避免代码重复,我将同一个工厂注入多个服务。起初,当我这样做时,它开始抛出错误Error: [$injector:unpr] Unknown provider
经过一些调试后,很明显这是一个加载订单问题。为了解决这个问题,我在build.config.js
文件中更改了module.exports.app_files.js
,以便在服务之前加载工厂。
我的build.config.js文件现在有了这个
module.exports = {
build_dir: 'build'
compile_dir: 'bin',
app_files: {
modules: [
'src/**/*.js',
'!src/**/*.spec.js',
'!src/**/*-service.js',
'!src/**/*-controller.js',
'!src/**/*-config.js',
'!src/**/*-directive.js',
'!src/**/*-factory.js',
'!src/**/*-filter.js',
'!src/**/*-run.js'
],
js: [
'src/**/*-factory.js',
'src/**/*-service.js',
'src/**/*-controller.js',
'src/**/*-config.js',
'src/**/*-directive.js',
'src/**/*-filter.js',
'src/**/*-run.js',
'!src/**/*.spec.js'
],
...
似乎我被迫拥有一个层次结构,而且我永远不会有一个工厂命名的文件,它依赖于一个名为file的服务。是否应该或不应该在这里辩论;我更关心等级制度。
我想知道是否有另一种解决方法?
[编辑]:我想我找到了问题的根源(手指交叉,它保持固定)。我正在使用grunt watch
进行开发。但是,当我停止这个过程并简单地运行grunt
时,一切都很开心。感谢下面的人提问并确定这不是正常行为!