我们在一个Meteor项目中将npm安装的节点模块放在哪里?

Ste*_*non 10 javascript meteor

我跟着github meteorirc项目的主角并将它们放入/ public /

我从内部/ public /通过npm安装了我的节点模块,因此我有一个/ public/node_modules /目录.

我不认为这是他们的'正确'或'标准'的地方,因为根据Meteor文档......

Meteor收集所有JavaScript文件,不包括客户端和公共子目录下的任何内容,并将它们加载到光纤内的Node.js服务器实例中

要加载的代码位于服务器目录和服务器js文件中,看起来像这样.

var require = __meteor_bootstrap__.require;

var path = require("path");
var fs = require('fs');
var base = path.resolve('.');
if (base == '/'){
  base = path.dirname(global.require.main.filename);   
}

var Twit;
var twitPath = 'node_modules/twit';
var publicTwitPath = path.resolve(base+'/public/'+twitPath);
var staticTwitPath = path.resolve(base+'/static/'+twitPath);
if (path.existsSync(publicTwitPath)){
  Twit = require(publicTwitPath);
}
else if (path.existsSync(staticTwitPath)){
  Twit = require(staticTwitPath);
}
else{
  console.log('WARNING Twit not loaded. Node_modules not found');
}
Run Code Online (Sandbox Code Playgroud)

根据文档,这不是标准的,我不相信我应该这样做.然而,它在我的开发平台和部署meteor.com的生产中都有效.

在项目的目录结构中应该安装节点模块,以便它们在本地工作,并在meteor.com或其他地方部署?

小智 6

cd /usr/local/meteor/lib/ && npm install <module>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果您使用此解决方案通过部署功能部署到meteor.com,则不会部署节点模块.此解决方案适用于本地开发或在您自己的Meteor部署(如AWS等)上安装节点模块.如果要部署到meteor.com使用(此解决方案).[http://stackoverflow.com/questions/10476170/how-can-i-deploy-node-modules-in-a-meteor-app-on-meteor -com] (8认同)