Node.js npm不';t build Contextify发布-未找到节点路径?

Node.js npm不';t build Contextify发布-未找到节点路径?,node.js,packaging,npm,Node.js,Packaging,Npm,我正在打包一个节点应用程序,以便在没有npm的服务器上部署。我相信我已经找到了答案——我使用npm根据package.json文件将所有依赖项安装在本地node_modules文件夹中 这一切看起来都很好,但是当我试图从服务器运行节点文件时,它抱怨说它找不到模块“../build/Release/contextify” 这是有道理的,因为在node\u modules/.npm/contextify/0.0.4/package/lib/contextify.js中,它要求有问题的文件,而node

我正在打包一个节点应用程序,以便在没有npm的服务器上部署。我相信我已经找到了答案——我使用npm根据package.json文件将所有依赖项安装在本地node_modules文件夹中

这一切看起来都很好,但是当我试图从服务器运行节点文件时,它抱怨说它
找不到模块“../build/Release/contextify”

这是有道理的,因为在
node\u modules/.npm/contextify/0.0.4/package/lib/contextify.js
中,它要求有问题的文件,而
node\u modules/.npm/contextify/0.0.4/package/build
没有名为
Release
的目录。我假设npm只是没有构建发行版,所以我切换回开发机器,运行
npm安装
——它没有抱怨,似乎构建了contextify:

$ sudo npm install

> contextify@0.0.4 preinstall /path/to/node/stuff/node_modules/contextify
> node-waf clean || true; node-waf configure build

'clean' finished successfully (0.014s)
Setting srcdir to                        : /path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package 
Setting blddir to                        : /path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package/build 
Checking for program g++ or c++          : /usr/bin/g++ 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for node path                   : not found 
Checking for node prefix                 : ok /usr/local/Cellar/node/0.4.5 
'configure' finished successfully (0.043s)
Waf: Entering directory `/path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package/build'
[1/2] cxx: src/contextify.cc -> build/default/src/contextify_1.o
[2/2] cxx_link: build/default/src/contextify_1.o -> build/default/contextify.node
Waf: Leaving directory `/path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package/build'
'build' finished successfully (0.370s)
不幸的是,
package/build
目录仍然没有
Release
文件夹

所以,我想问题是,contextify是否因为没有设置节点路径而无法构建(我尝试了导出节点路径,但似乎没有帮助……),或者contextify似乎没有构建的其他原因


也许我遗漏了更大的问题?

我也有同样的问题

您可能希望将此问题添加到github,作者可能会比这里更快地为您提供帮助。

我认为您的nodejs本地版本是v.0.4.*而您的nodejs服务器版本是v0.5*

确保在开发和生产中使用相同版本的nodejs。如果您切换到v0.4。*我打赌您的问题将得到解决。我注意到在5.*版本中,节点waf的“构建”配置从“默认”切换到“发布”

但有一个警告:


一些npm包使用(编译)二进制文件。I.M.O,在没有npm的情况下,您不应该将“已编译”的节点_模块捆绑在一个包中,以将其部署到“不同”的平台上。你迟早会遇到问题的。(与上面的一样)

此错误的修复方法只是删除waf的“build”目录,然后重新配置。不知何故,waf缓存了由于缺少节点路径而导致的错误配置结果,因此,即使您随后记住并设置了它,它实际上也不会编译任何内容,尽管configure报告没有错误。傻

export NODE_PATH="/usr/local/lib/node_modules/"
rm -fr build
node-waf configure
node-waf build
这就是问题的根源