meteorNpm.require()无法在父目录中find文件

我试图让一个废弃的nodejs库在Meteor下工作。

为什么Npm.require('./crypto-js/crypto')能正常工作,但是Npm.require('../convert')会抛出错误Error: Cannot find module '../convert'

/packages/myPackage/package.js

 Package.on_use(function (api) { var path = Npm.require('path'); api.add_files(path.join('convert.js'), 'server'); api.add_files(path.join('crypto-js', 'crypto.js'), 'server'); api.add_files(path.join('util.js'), 'server'); }); 

/packages/myPackage/convert.js

 myFunc = function() { return true } 

/packages/myPackage/util.js

 Crypto = Npm.require('./crypto-js/crypto'); 

/packages/myPackage/crypto-js/crypto.js

 var conv = Npm.require('../convert') 

已经在IRC上回答了这个问题,但是在这里发布供参考。

作者想使用GitHub上托pipe的npm模块的分支。 要从某些repo和某些提交中导入npm模块,我们可以使用GitHub的tarball url。

  • 在/ packages / package-name中创build一个智能包
  • 在/packages/package-name/package.js描述包,添加文件,导出variables
  • 添加Npm.depends到package.js文件看起来像这样:

    Npm.depends({'NPM-MODULE-NAME':“ https://github.com/REPOAUTHOR/REPONAME/tarball/COMMIT-SHA1 ”});

  • 在一个智能包的文件中, ExportSymbol = Npm.require('NPM-MODULE-NAME')

  • 导出出口符号

例如: https : //github.com/Slava/meteor-npm-fork-example