如何正确使用节点模块与meteornpm

第一次尝试使用meteor节点模块

安装:

meteor add meteorhacks:npm 

然后安装:

 npm install multer 

在服务器目录中有一个单独的文件,名为“loadMulter”,只有这一行:

 var multer = Meteor.npmRequire('multer'); 

现在,运行“meteor”,并得到这个错误:

 W20150609-12:22:56.528(-5)? (STDERR) W20150609-12:22:56.528(-5)? (STDERR) /home/eugene/.meteor/packages/meteor-tool/.1.1.3.4sddkj++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:245 W20150609-12:22:56.529(-5)? (STDERR) throw(ex); W20150609-12:22:56.529(-5)? (STDERR) ^ W20150609-12:22:56.531(-5)? (STDERR) ReferenceError: require is not defined W20150609-12:22:56.531(-5)? (STDERR) at app/node_modules/multer/node_modules/busboy/node_modules/dicer/node_modules/streamsearch/lib/sbmh.js:5:20 W20150609-12:22:56.531(-5)? (STDERR) at app/node_modules/multer/node_modules/busboy/node_modules/dicer/node_modules/streamsearch/lib/sbmh.js:215:3 W20150609-12:22:56.531(-5)? (STDERR) at /home/eugene/dev/meteor/socially/.meteor/local/build/programs/server/boot.js:222:10 W20150609-12:22:56.531(-5)? (STDERR) at Array.forEach (native) W20150609-12:22:56.532(-5)? (STDERR) at Function._.each._.forEach (/home/eugene/.meteor/packages/meteor-tool/.1.1.3.4sddkj++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/server-lib/node_modules/underscore/underscore.js:79:11) W20150609-12:22:56.532(-5)? (STDERR) at /home/eugene/dev/meteor/socially/.meteor/local/build/programs/server/boot.js:117:5 

把这些东西放在一起的正确方法是什么?

不要使用npm installnpm软件包安装为本地node_module

您需要在添加meteorhacks:npm之后创build的名为package.json的特殊文件中指定所需的包meteorhacks:npm并启动Meteor。

 { "multer": "0.1.8" } 

https://github.com/meteorhacks/npm#defining-packages

您不能在Meteor应用程序中运行npm install multer

正确的方法是:

  1. meteor add meteorhacks:npm
  2. 在顶级目录中创build带有内容的文件packages.json

     { "multer": "0.1.8" } 
  3. 运行meteor ,NPM软件包将被自动安装

  4. 使用Meteor.npmRequire包含npm包

注意:一定要删除以前的npm install创build的node_modules文件夹。