【问题标题】:Meteor Npm.require() cannot find a file in parent directoryMeteor Npm.require() 在父目录中找不到文件
【发布时间】:2014-02-25 07:11:47
【问题描述】:

我正在尝试让一个废弃的 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')

【问题讨论】:

  • convert.js 所在目录中缺少 package.json 文件?编辑:Npm.require('../convert.js') 工作吗?
  • @Dave 我在与convert.js 相同的目录中有一个package.js,还需要package.json 吗?尝试Npm.require('../convert.js') ,但得到错误Error: Cannot find module '../convert.js'
  • 假设您将目录命名为 convert 或文件 convert.js,我认为这不是必需的。如果 Npm.require('../convert.js') 不起作用,并且 ../ 中有一个 convert.js 文件,那么 Meteor 没有像 Node 那样实现 require。
  • 使用那个废弃的库而不是 Atmosphere 上的 crypto* 包有什么特别的原因吗?我重新打包了sha1、base64等,很容易克隆my GitHub repo并添加更多功能。

标签: javascript node.js meteor npm


【解决方案1】:

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

作者想使用托管在 GitHub 上的 npm 模块的一个分支。要从某个 repo 和某个 commit 导入 npm 模块,我们可以使用 GitHub 的 tarball url。

  • 在 /packages/package-name 中创建智能包
  • 在/packages/package-name/package.js 中描述包,添加文件,导出变量
  • 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

【讨论】:

  • 如果你的 node 模块没有托管在 Github 上怎么办?
  • @Dave 嗯,您可以使用您的模块将任何 url 传递给 tarball。如果你想让你的 npm 模块保持在 fs 上,我还不知道这种方式
  • @imslavko,有没有办法Npm.require 一个子模块而不是这样做?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
相关资源
最近更新 更多