Javascript 将NPM包连接到一个JS文件中
我正在尝试使用Express处理(模板语言)。解析云代码是不允许NPM的节点/快速主机。荒谬,我知道。不过,我仍然可以使用requires语句将外部文件加载到代码中,所以我认为我有希望能够实现这一点 因此,我的问题是如何将整个Swig包放入一个JS文件中,我可以从我的Parse Express应用程序中包括该文件,如下所示:Javascript 将NPM包连接到一个JS文件中,javascript,node.js,npm,parse-platform,browserify,Javascript,Node.js,Npm,Parse Platform,Browserify,我正在尝试使用Express处理(模板语言)。解析云代码是不允许NPM的节点/快速主机。荒谬,我知道。不过,我仍然可以使用requires语句将外部文件加载到代码中,所以我认为我有希望能够实现这一点 因此,我的问题是如何将整个Swig包放入一个JS文件中,我可以从我的Parse Express应用程序中包括该文件,如下所示: var swig = require("./cloud/swig.js"); 值得注意的是,解析中断需要语句,这样NPM包在不修改node_modules文件夹中的每个文
var swig = require("./cloud/swig.js");
值得注意的是,解析中断需要语句,这样NPM包在不修改node_modules文件夹中的每个文件的情况下就无法正常工作,从而使其路径中有cloud
(这就是为什么我上面的路径中有cloud
)。在上传大量小文件时,解析也会阻塞。在这个平台上需要连接
我已经试着用browserify玩了几个小时,但是当我用require语句加载browserify文件时,我所做的任何事情都不会暴露Swig对象。我认为这可能是一个正确的选择,因为Browserified文件包括来自Swig的所有文件,但它不会对外公开这些文件
我的问题是,这是否可以在browserify中实现,如果可以,如何实现?或者,是否有其他方法将NPM repo连接到一个文件中,以便更容易从该平台中包含它
非常感谢。Browserify不是适合这项工作的工具 顾名思义,browserify用于生成要在浏览器中执行的文件。它从入口点(即传递给browserify的一些JS文件)遍历require调用,并将它们绑定到一个对象中,该对象将它们的名称映射到包装模块的函数。它不希望
require
函数已经存在,也不使用它。它替代了自己的require
实现,该实现只做一件事:从bundle中查找名称,执行匹配函数并返回其exports
理论上,您可以要求一个browserify包,但它只会返回一个空对象(尽管它可能会与globals混淆)。而且它很可能会崩溃,因为捆绑的模块认为它们是在浏览器中执行的。这没有任何好处
如果您想继续使用主机,唯一明智的选择是从本地项目文件夹复制node\u modules
文件夹。如果您的计算机和服务器不是100%兼容(例如32位对64位,Debian对RedHat,OSX/Windows对Linux),这可能不起作用,但这主要取决于您的确切依赖关系(基本上,使用node gyp
构建的任何内容都可能有问题)
Node.js在自动查找require
调用中的依赖项时使用Node\u modules
文件夹。如果您可以在服务器上以某种方式获得一个包含正确内容的node\u modules
文件夹,require(“foo”)
只要node\u modules
包含一个模块foo
,最终,您试图在解析云代码中使用npm模块,但目前不可能:
<>但是如果你只是尝试使用SWIG,那么作为一个工作,你可以考虑使用。解析已包含下划线:
也许您可以尝试使用swig的浏览器版本,还有,你有没有试着用它作为你的BFy入口点?输出文件-您应该能够在ParseCloud项目中要求该文件。更改宿主?或者,如果出于任何原因,它不是一个选项,zip/unzip?browserify不会这么做-你需要文件夹结构,而不是一个文件。在发布答案之前,你没有阅读作者的问题,因为他指出他不能在解析云中使用NPM。他没有尝试使用npm模块。他正试图将一个npm模块连接到一个文件中,以便他可能需要它。需要一个文件就行了。失败。