我们如何通过npm与Meteor一起使用节点模块?

Ste*_*non 47 javascript node.js npm meteor

我们如何通过npm与Meteor一起使用节点模块?

或者那些依赖于包装API的东西

或者是否建议使用规定的方法?

Dan*_*scu 46

Meteor 1.3于2016年3月28日发布,为应用程序提供完整的ES6(ES2015)模块支持和开箱即用的NPM支持.现在,应用程序和软件包可以直接轻松地在客户端和服务器上加载NPM模块.

如果您可以使用1.3,请查看http://guide.meteor.com/using-packages.html#installing-npm.

例如,要使用moment.js:

meteor npm install --save moment
Run Code Online (Sandbox Code Playgroud)

然后在你的代码中:

import moment from 'moment';

// this is equivalent to the standard node require:
const moment = require('moment');
Run Code Online (Sandbox Code Playgroud)

如果您需要使用较旧版本的Meteor,请阅读下面的其余答案.


流星前1.3:

自v0.6.0起,Meteor在第三方软件包的帮助下直接与NPM模块集成.例如,要使用像这样的模块ws,

  1. 运行sudo npm install -g ws(或本地安装,请参阅)
  2. 在您的服务器JavaScript文件中,

    var Websocket = Npm.require('ws');
    var myws = new Websocket('url');
    
    Run Code Online (Sandbox Code Playgroud)

要使用核心节点模块,只需进行相应的Npm.require()呼叫,例如var Readable = Npm.require('stream').Readable.


由于Arunoda开发的NPM软件包,您可以直接使用Meteor中的230,000多个NPM模块中的任何一个.

您还可以从智能包中定义Npm包的依赖关系 - 从最初的npm支持声明:

您的智能包现在可以通过添加对Npm.dependsin 的调用直接定义依赖项package.js:

Npm.depends({
  "awssum": "0.12.2",
  "underscore.string": "2.3.1"
});
Run Code Online (Sandbox Code Playgroud)

所有这些都适用于热代码重新加载,就像Meteor的其余部分一样.当您进行更改时,捆绑程序将自动下载缺少的npm软件包并重新锁定其依赖项.

要在服务器代码中使用NPM模块,请Npm.require按照通常使用plain的方式使用require.值得注意的是,__meteor_bootstrap__.require已被淘汰,其所有用途都已转换​​为Npm.require.

在您的应用程序中一个使用NPM模块的小例子.

  • @MikeGraf:添加了使用核心模块的示例. (2认同)

Ray*_*nos 21

请注意,此答案适用于0.6.0之前的Meteor版本,该版本于2013年4月发布并添加了直接npm集成

像往常一样安装模块npm,然后使用

var require = __meteor_bootstrap__.require,
    pd = require("pd"),
    after = require("after") // etc
Run Code Online (Sandbox Code Playgroud)

加载您想要的任何模块


gad*_*icc 6

我在Meteorpedia上做了一个完整的写作:

http://www.meteorpedia.com/read/npm

本文介绍了如何在应用程序和/或包中使用npm,以及包含常规回调和事件发送器回调的常用模式,以便在Meteor和Fibers中正常工作,并包含对Arunoda的异步实用程序和其他资源的引用.


Aks*_*hat 6

你可以使用Meteor Npm

meteor add meteorhacks:npm
Run Code Online (Sandbox Code Playgroud)

然后packages.json使用NPM模块的信息在项目的根目录中创建一个文件.

{
    "redis": "0.8.2",
     "github": "0.1.8"
}
Run Code Online (Sandbox Code Playgroud)

然后就像(服务器端)一样简单

var github = Meteor.npmRequire("github");
var redis = Meteor.npmRequire("redis");
Run Code Online (Sandbox Code Playgroud)

所以你只需使用Meteor.npmRequire而不是require

  • @MurWade是最简单的方法.唯一的另一种方法是制作自己的包装,这是过度的.我也不建议在Dan的答案中使用`npm install -g`,因为捆绑/部署时应用程序将无法正常工作.这种方式也是在捆绑时安装的 (2认同)