没有光纤就等不及了

时间:2016-06-23 14:38:01

标签: meteor node-fibers

流星版本:1.2.1

使用来自themeteorchef的基础框架

并使用一个软件包themeteorchef:seeder

当我尝试在一个干净的新项目(没有基础启动器)中使用播种器包时,它工作正常。但是,在我从基础启动器创建的项目中,它会在调用Seed函数的代码部分中抛出Can't Wait Without A Fiber错误。

当我尝试调用findinsert等数据库函数时,我发生了同样的事情。我将fibers添加到app.use

中的package.js库列表后,将代码包含在光纤功能中

这是我的package.js文件

Package.describe({
  name: 'team:library',
  version: '0.0.1',
  // Brief, one-line summary of the package.
  summary: '',
  // URL to the Git repository containing the source code for this package.
  git: '',
  // By default, Meteor will default to using README.md for documentation.
  // To avoid submitting documentation, set this field to null.
  documentation: 'README.md'
});

Npm.depends({
  library: "link-to-a-github-commit",
  util: '0.10.3'
});

Package.onUse(function(api) {
  api.versionsFrom('1.2.1');
  api.use(['ecmascript', 'templating', 'check', 'mongo', 'kadira:flow-router', 'themeteorchef:seeder', 'fibers']);


  // Load the lib directory before all other files are loaded
  api.addFiles( 'lib/constants/tokens.js', 'server' );

  api.addFiles('client/templates/library-widget.html', 'client');
  api.addFiles('client/templates/library-widget.js', 'client');

  api.addFiles('client/templates/user-folder-list-widget.html', 'client');
  api.addFiles('client/templates/user-folder-list-widget.js', 'client');

  api.addFiles('client/templates/index.html', 'client');

  api.addFiles( 'collections/LibraryUsers.js', 'server' );
  api.export( 'LibraryUsers', 'server' );

  api.addFiles('server/startup.js', 'server');
  api.addFiles('server/methods/library-team.js', 'server');

});

Package.onTest(function(api) {
  api.use('ecmascript');
  api.use('tinytest');
  api.use('team:library');
  api.addFiles('library-tests.js');
});

我在我的包中的server / startup.js文件中调用Seed,如下所示:

Seed( 'Products', {
  min: 5,
  environments: [ 'development', 'staging', 'production' ],
  model( index ) {
    return {
      name: faker.commerce.product(),
      price: faker.commerce.price()
    };
  }
});

我将它包含在Fiber中,如下所示

try {
  Fiber( function() {
    Seed( 'Products', {
      min: 5,
      environments: [ 'development', 'staging', 'production' ],
      model( index ) {
        return {
          name: faker.commerce.product(),
          price: faker.commerce.price()
        };
      }
    });
  });
} catch( error ) {
  console.log( error );
}

在我的包文件中包含光纤后,如上面的包文件所示。我收到的错误信息是

[ReferenceError: Fiber is not defined]

可能导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:0)

将以下行放在你的光纤之前(函数(){...'可能会解决该错误,因为它定义了你的' Fiber'对象使用:

Fiber = Npm.require('fibers');

或者只是这可能也有效,不确定:

Fiber = require("fibers")