我正在打包一个节点应用程序,以便在没有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只是没有构建发行版,所以我切换回开发机器,并运行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文件夹。
所以,我猜问题是contextify之所以无法构建是因为我的节点路径没有设置(我尝试了export NODE_PATH,但它似乎没有帮助...),或者是否有其他原因导致contextify看起来没有构建。
也许我漏掉了更大的东西?
发布于 2011-09-02 04:47:27
我也有同样的问题,
你可能想把这个问题添加到github上,作者可能会比在这里更快地帮助你。https://github.com/brianmcd/contextify/issues?sort=created&direction=desc&state=closed&page=1
发布于 2012-06-28 15:25:00
这个错误的修复方法是删除waf的"build“目录,然后重新配置。由于缺少NODE_PATH,网站管家缓存了错误的配置结果,所以即使你记住并设置了它,它实际上也不会编译任何东西,尽管配置没有报告错误。太傻了!
export NODE_PATH="/usr/local/lib/node_modules/"
rm -fr build
node-waf configure
node-waf build发布于 2011-09-17 18:11:17
我认为您的本地nodejs版本是v.0.4。*而您的nodejs服务器版本是v0.5。*
请确保您的开发和生产使用相同版本的nodejs。如果您切换到v0.4。*我打赌您的问题将会得到解决。我注意到在5.*版本中,node-waf 'build‘配置从'default’切换到了'Release‘。
然而,有一个警告:
一些npm包正在使用(编译的)二进制文件。I.M.O,您不应该将“编译”的node_modules捆绑在一个包中,以便在没有npm的“不同”平台上部署它。你遇到问题只是个时间问题。(如上图所示)
https://stackoverflow.com/questions/7262251
复制相似问题