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,
sudo npm install -g ws(或本地安装,请参阅此)在您的服务器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.
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)
加载您想要的任何模块
我在Meteorpedia上做了一个完整的写作:
http://www.meteorpedia.com/read/npm
本文介绍了如何在应用程序和/或包中使用npm,以及包含常规回调和事件发送器回调的常用模式,以便在Meteor和Fibers中正常工作,并包含对Arunoda的异步实用程序和其他资源的引用.
你可以使用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