我们如何或可以通过 npm 和 Meteor 使用节点module?

IT技术 javascript node.js npm meteor
2021-02-05 06:00:24

我们如何或可以通过 npm 和Meteor使用节点module

或者这会依赖于打包API吗?

或者是否有推荐的规定方法?

6个回答

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

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

例如,使用moment.js:

meteor npm install --save moment

然后在你的代码中:

import moment from 'moment';

// this is equivalent to the standard node require:
const moment = require('moment');

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


Pre-Meteor 1.3

从 v0.6.0 开始,Meteor在 3rd 方包的帮助下直接与 NPM module集成例如,要使用像这样的modulews

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

    var Websocket = Npm.require('ws');
    var myws = new Websocket('url');
    

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


借助 Arnoda 开发NPM 包,您可以将超过230,000 个 NPM module中的任何一个直接与 Meteor一起使用。

您还可以从智能包中定义对 Npm 包的依赖——从npm 支持的最初声明开始

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

Npm.depends({
  "awssum": "0.12.2",
  "underscore.string": "2.3.1"
});

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

要在服务器代码中使用 NPM module,请Npm.require像通常使用普通require. 值得注意的是,__meteor_bootstrap__.require已被淘汰,其所有用途均已转换为Npm.require.

一个在应用程序中使用 NPM module的小例子

您能否澄清 Npm.require(...) 与 http 或 url 等 nodejs 核心module一起使用?如果你有的话,也许可以将这些信息添加到答案中。
2021-03-16 06:00:24
@DanDascalescu 最后!
2021-03-30 06:00:24
@MikeGraf:添加了使用核心module的示例。
2021-04-05 06:00:24
@rickyduck:Windows 版的 Meteor现在非常好用,几天后就会正式发布,如果不是今天的话。
2021-04-11 06:00:24
知道什么时候会为 Windows 发布 0.6 吗?
2021-04-13 06:00:24

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

像往常一样安装modulenpm,然后使用

var require = __meteor_bootstrap__.require,
    pd = require("pd"),
    after = require("after") // etc

加载任何你想要的module

它似乎在传递依赖项上崩溃 - 例如尝试使用 aws-lib。有任何想法吗?
2021-03-16 06:00:24
@SteeveCannon 它进入 if server 语句,因为它会在客户端失败
2021-03-17 06:00:24
以及如何在客户端上要求module?只是想让github.com/mashpie/i18n-node工作
2021-03-29 06:00:24
@Nico 使用 browserify 或将module破解为单个 js 文件
2021-04-06 06:00:24
使用 npm 安装module时,请检查 npm 版本是否为 1.0 或更高版本并进行本地安装(npm install module_name)。
2021-04-09 06:00:24

我在 Meteorpedia 上写了一篇完整的文章:

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

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

“应用程序中的 NPM”第 3 点。var Github = Meteor.require('github'); 不应该是 Meteor.npmRequire (...) 吗?
2021-03-21 06:00:24

您可以使用Meteor Npm

meteor add meteorhacks:npm

然后packages.json在项目的根目录中创建一个包含 NPM module信息的文件。

{
    "redis": "0.8.2",
     "github": "0.1.8"
}

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

var github = Meteor.npmRequire("github");
var redis = Meteor.npmRequire("redis");

所以你只需使用Meteor.npmRequire代替require

该软件包仅用于简单地使用 npm module就大材小用了。
2021-03-30 06:00:24
@MurWade 这是最简单的方法。唯一的另一种方法是制作自己的包,这有点矫枉过正。我也不建议npm install -g在 Dan 的回答中使用as ,因为该应用程序在捆绑/部署时将无法正常工作。这种方式在捆绑时也安装了它
2021-04-04 06:00:24

我写了一篇关于如何从 Meteor 0.6.5 开始执行此操作的要点,如何将 Node.js npms 添加到您的 Meteor.js 项目