Node.js npm不';t build Contextify发布-未找到节点路径?
我正在打包一个节点应用程序,以便在没有npm的服务器上部署。我相信我已经找到了答案——我使用npm根据package.json文件将所有依赖项安装在本地node_modules文件夹中 这一切看起来都很好,但是当我试图从服务器运行节点文件时,它抱怨说它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
找不到模块“../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
这就是问题的根源