当我在Meteor项目中使用NPM软件包时,一些研究提出了这个方案:
https://github.com/arunoda/meteor-npm/
基本上你只需要将软件包安装到你的meteor项目的根文件夹中,然后包含:
var GithubApi = Meteor.require('github');
这就是我正在做的事情,它在我的本地主机上工作正常。然后我尝试上传到Meteors测试服务器并且它一直崩溃,因为它无法使用这种方法加载我的异步模块,这种方法正在我的本地工作。问题是在根目录中有node_modules文件夹,导致应用程序在流星服务器上崩溃。但是为了使用Meteor.require来包含软件包,这就是他们必须要去的地方。
所以我必须按照此主题中的说明来解决问题:
How can I deploy node modules in a Meteor app on meteor.com?
此方法要求我将包安装到/ public文件夹中。然后我必须使用以下代码来包含该包:
path = Npm.require("path")
fs = Npm.require("fs")
base = path.resolve(".")
isBundle = fs.existsSync(base + "/bundle")
modulePath = base + ((if isBundle then "/bundle/static" else "/../client/app")) + "/node_modules/"
async = Npm.require(modulePath + "async")
该主题来自2012年,所以我想知道目前在服务器上包含NPM模块的最佳做法是什么?
我可以在客户端目录中包含一个bundle.js浏览器文件,在客户端上包含npm模块,这样就解决了我的问题,但是npm使用服务器端的最佳方法是什么?
答案 0 :(得分:4)
您的应用程序中不应包含node_modules
文件夹。在大多数情况下,如果这样做,它甚至不能在开发模式下工作。
相反,您应该只在packages.json
文件中列出必要的包(如npm
package documentation中所述),并让npm
将它们作为依赖项进行管理。