【问题标题】:mean.io dependency injectionmean.io 依赖注入
【发布时间】:2014-12-09 01:45:03
【问题描述】:

mean.io 中的依赖注入是如何工作的。根据文档http://learn.mean.io/#mean-packages-dependency-injection。

我创建了两个包 pkg1 和 pkg2。在我的 pkg2 app.js 文件中,我有

Pkg2.register(function(app, auth, database,Pkg1) {  
  Pkg2.routes(app, auth, database);


  Pkg2.menus.add({
    title: 'pkg2 example page',
    link: 'pkg2 example page',
    roles: ['authenticated'],
    menu: 'main'
  });

  Pkg2.aggregateAsset('css', 'pkg2.css');

  return Pkg2;
});

但是当我启动应用程序时出现此错误

 Error: dependency 'Pkg1' was not registered

使用以下代码注册Pkg1

Pkg1.register(function(app, auth, database) {
 Pkg1.routes(app, auth, database);
 Pkg1.menus.add({
   title: 'pkg1 example page',
   link: 'pkg1 example page',
   roles: ['authenticated'],
   menu: 'main'
 });

 Pkg1.aggregateAsset('css', 'pkg1.css');

 return Pkg1;
});

两个包都是使用命令创建的

mean package pkg1
mean package pkg2

【问题讨论】:

  • 你打电话给Pkg1.register了吗?
  • @tkone 是的 Pkg1.register 在它的 app.js 中被调用
  • 您也应该显示该代码。很难看到发生了什么

标签: angularjs node.js dependency-injection mean-stack mean.io


【解决方案1】:

当您有两个包时,您可以在另一个包中使用一个包,如下所示。

在Pk1中,可以注册包:

var Module = require('meanio').Module;
var Package1 = new Module('pk1');

Package1.register(function(app) {
    ...
});

然后你可以在你的第二个包中使用 pk1。

var Module = require('meanio').Module;
var Package2 = new Module('pk2');

Package2.register(function(app, pk1) {
    ...
});

确保您使用的是 pk1,而不是 Package1。否则,meanio包系统给你包未注册错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 2014-06-12
    • 2013-04-30
    • 2021-11-19
    • 1970-01-01
    • 2020-12-20
    相关资源
    最近更新 更多