npm不构建Contextify Release - 找不到节点路径?

时间:2011-08-31 19:20:07

标签: node.js packaging npm

我正在打算在没有npm的情况下打包部署在服务器上的节点应用程序。我相信我已经弄明白了 - 我使用npm根据package.json文件在本地node_modules文件夹中安装所有依赖项。

这一切似乎都运行良好,但当我尝试从服务器运行节点文件时,它会抱怨它Cannot find module '../build/Release/contextify'

这是有道理的,因为在node_modules/.npm/contextify/0.0.4/package/lib/contextify.js中,它会询问相关文件,node_modules/.npm/contextify/0.0.4/package/build没有名为Release的目录。我假设npm刚刚没有构建版本,所以我切换回dev机器,并运行npm install - 它没有抱怨,它似乎构建了上下文:

$ 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文件夹。

所以,我想问题是如果上下文无法构建,因为我的节点路径未设置(我尝试export NODE_PATH,但它似乎没有帮助...),或者如果有上下文似乎没有建立的其他原因。

也许我错过了更大的东西?

3 个答案:

答案 0 :(得分:3)

我也遇到同样的问题,

您可能希望将问题添加到github,作者可能会比此处更快地帮助您。 https://github.com/brianmcd/contextify/issues?sort=created&direction=desc&state=closed&page=1

答案 1 :(得分:3)

此错误的修复只是删除waf的“build”目录,然后重新配置。由于缺少NODE_PATH,某种方式waf缓存了错误的配置结果,所以即使你记得并设置它,它也不会实际编译任何东西,尽管configure报告没有错误。傻!

export NODE_PATH="/usr/local/lib/node_modules/"
rm -fr build
node-waf configure
node-waf build

答案 2 :(得分:1)

我认为你的本地版本的nodejs是v.0.4。*,你的服务器版本的nodejs是v0.5。*

确保为开发和生产使用相同版本的nodejs。如果切换到v0.4。*我打赌你的问题将会解决。我注意到节点-waf'build'配置在5. *版本的某处从'default'切换到'Release'。

但是有一个警告:

一些npm包使用(编译)二进制文件。 I.M.O,您不应该将“已编译的”node_modules捆绑在一个软件包中,以便在没有npm的情况下将其部署在“不同的”平台上。在你遇到问题之前,这是一个时间问题。 (如上所述)