【问题标题】:'require is not defined' in Meteor.js when including NPM package包含 NPM 包时,Meteor.js 中的“要求未定义”
【发布时间】:2013-12-01 03:31:59
【问题描述】:

我正在尝试使用来自 Meteor.js 的 npm 包(版本 0.6.6.3) 使用 Meteor.require。但是它会抛出一个错误,指出未定义 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

【问题讨论】:

  • Meteor.require() 是错字吗?这就是您的代码中的内容,尽管您的问题文本引用了正确的 Npm.require()
  • 这是一个错字,已更正!
  • Npm.require() 是正确的。
  • 谢谢你的作品!我应该将module.exports 编辑成什么? Npm.module.exports 不起作用...

标签: javascript node.js meteor npm meteorite


【解决方案1】:

Meteor.requiremeteor npm smart package添加的一个函数,除了包装一些异步回调之外,它实际上对使用npm并没有多大作用。它有几个月大了,所以你可能想尝试直接使用 Meteor 的 Npm.require 以防万一发生故障。

此软件包对 Meteor 全局的猴子补丁具有误导性。

【讨论】:

    【解决方案2】:

    使 cmets 高于答案。

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

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

    1. 在包内声明为全局变量
    2. 在 package.js 文件中使用 api.export() 导出。

    这方面的文档有点粗糙,但请查看 namespacingwriting packages。在 github 上查看各种 meteor packages 也非常有用。

    【讨论】:

      【解决方案3】:

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

      像这样:

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

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

      【讨论】:

        【解决方案4】:

        确保您使用的是meteor-npm 包。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-21
          • 2012-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多