包含NPM包时,Meteor.js中的'require is not defined'

时间:2013-11-18 04:24:48

标签: javascript node.js meteor npm meteorite

我正在尝试使用Meteor.require从Meteor.js (版本0.6.6.3)中使用npm包。但是,它会抛出错误,指出require未定义。为什么这样,我们如何解决它?

mrt add npm
npm install github

packages.json

{
    "github": "0.1.8"
}

github.js

var GITHUB = Meteor.require('github');

错误

ReferenceError: require is not defined

npm包中包含

等行
var https = require('https')
var url = require('url')
var crypto = require('crypto')

是否必须手动编辑包的代码才能使用Npm.require?手动编辑它们可以消除错误。

然而有一条线:

module.exports = SOMETHING

我们应该如何在流星内呼叫module

4 个答案:

答案 0 :(得分:10)

Meteor.require是由meteor npm smart package添加的函数,除了包装一些异步回调之外,实际上除了使用npm之外没什么作用。它已经有几个月的历史了,所以你可能想尝试直接使用Meteor的Npm.require,以防出现问题。

通过此程序包对Meteor全局进行猴子修补是误导性的。

答案 1 :(得分:4)

将评论置于答案之上。

Meteor.require()是拼写错误吗?这就是你的代码中的内容,尽管你的问题文本引用了正确的Npm.require()。

我认为module.exports用于同一文件的非流星使用。用于导出的流星变量应

  1. 在包
  2. 中声明为全局变量
  3. 在package.js文件中使用api.export()导出。
  4. 关于此的文档有点粗略,但请查看namespacingwriting packages。另外在github上查看各种meteor packages非常有用。

答案 2 :(得分:0)

确保您使用meteor-npm包。

https://www.npmjs.com/package/meteor-npm

答案 3 :(得分:0)

在流星中使用Npm.require()。

像这样:

var fs = Npm.require("fs");

为此你需要一个Meteor包:meteorhacks:npmnpm-container