我注意到,在试图让看似简单的节点包与故宫安装(如神经 ,一个“微框架”),我经常碰到一些形式的依赖性疼痛。 一些挖后,我找到了问题所在神经的bcrypt模块,它显然是写在C / C ++,并有包管理器下载之后进行编译。
不幸的是,这似乎是,如果你想要这个工作在Windows上,答案是(从bcrypt问题的一个线程)“安装Linux VM”。 所以,今天早些时候,我就是这样做的,并开始运行到其他依赖(需要一定的无名容易包看到另一个C编译器错误后之前,你甚至可以考虑一下建筑,尽管被安装GCC安装),然后最终(约软件包或其他未能找到“Arrays.c”我认为),我竟然放弃了,并从神经切换来表达吧。 讽刺的是,更大和更复杂的表达与Linux和Windows上安装故宫没有一个单一的问题。
所以,我的问题是:是否有任何过滤器/依赖跟踪功能,可以让你看到,如果一个包有除了节点核心额外的依赖? 因为对我来说节点的诱惑是“在Javascript一切”,而这种东西驱散错觉相当令人不快。 事实上,尽管已经做得比我多的时间用C / C ++的工作,每当我看到一个要求,“制造”的东西,这些天我一般运行在另一个方向尖叫。 :)
查找出在的package.json的“脚本”字段。
如果它包含类似
"scripts": {
"install": "make build",
}
并在根目录下生成文件,有一个很好的可能性,该包装具有将必须被编译并建立了一些本机模块。 许多软件包包括一个Makefile只编译测试。
包装上的文件,这种检查并不排除某些依赖将不得不编译和生成的可能性。 这将意味着重复此过程中的package.json,它们的相关性等各个依赖。
这就是说许多模块已更新,以在Windows上安装,无需构建,表达了一个。 但是不能保证所有的包。
使用Linux虚拟机似乎是最好的选择。 在窗口开发的Node.js应用程序为您提供了安装VM,Node.js的和快速分步说明。
如果依赖使得包不纯或不是第一个解决方案并不能告诉你。 更好的搜索GYP生成的输出:
find node_modules/ | grep binding.gyp || echo pure
节点是不是“一切的javascript”,因为延长节点核心的一种方式是编写C / C ++插件。
所以节点是多个围绕℃的JavaScript包装/ C ++模块使用V8。
你怎么能写在例如纯JavaScript有效的数据库驱动程序? 这将是可能的,但是进展缓慢。
作为过滤器,它是由笔者来记录他的包。 没有自动过滤器。