更新 - 请参阅帖子底部
我正在尝试在node.js中设置jquery并遇到一些麻烦。正如described on SO我正在使用npm install jquery
安装jquery并从命令行执行我的javascript作为脚本,而不是将其作为服务器运行。
需要注意几点:
因此,从包含我的节点脚本的目录,我npm install jquery
。终端然后熄灭5秒并完成一些事情,特别是下载模块并构建上下文。最后,消息为'build' finished successfully
。
另外,从安装日志中我看到:
此时我尝试运行我的脚本:./script.js
,但这是输出:
Internal Contextify ERROR: Make sure Contextify is build with your current Node version.
To rebuild, go to the Contextify root folder and run 'node-waf distclean && node-waf configure build'.
所以,我做了以下几点:
$ cd node_modules/jquery/node_modules/jsdom/node_modules/contextify/
$ node-waf distclean && node-waf configure build
'distclean' finished successfully (0.002s)
Setting srcdir to: /proj/node_modules/jquery/node_modules/jsdom/node_modules/contextify
Setting blddir to: /proj/node_modules/jquery/node_modules/jsdom/node_modules/contextify/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
'configure' finished successfully (0.729s)
Waf: Entering directory `/proj/node_modules/jquery/node_modules/jsdom/node_modules/contextify/build'
[1/2] cxx: src/contextify.cc -> build/Release/src/contextify_1.o
[2/2] cxx_link: build/Release/src/contextify_1.o -> build/Release/contextify.node
Waf: Leaving directory `/proj/node_modules/jquery/node_modules/jsdom/node_modules/contextify/build'
'build' finished successfully (3.335s)
然而,当我运行脚本时,我仍然得到Internal Contextify ERROR
。以下是完整的错误消息:
Internal Contextify ERROR: Make sure Contextify is built with your current Node version.
To rebuild, go to the Contextify root folder and run 'node-waf distclean && node-waf configure build'.
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Unable to load shared library /proj/node_modules/jquery/node_modules/jsdom/node_modules/contextify/build/Release/contextify.node
at Object..node (module.js:472:11)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Module.require (module.js:354:17)
at require (module.js:370:17)
at Object.<anonymous>(/proj/node_modules/jquery/node_modules/jsdom/node_modules/contextify/lib/contextify.js:2:22)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
对我来说,not found
在编译时是Checking for node path
的输出似乎很奇怪,但我不知道该怎么做,除了它对我来说是意外的。
如果有人能提出任何建议,我将不胜感激!
更新 - 2/21/12
经过一些研究,我已经能够修复未找到的节点路径的奇怪性。在终端中执行:export NODE_PATH="/usr/local/lib/node"
后,在构建过程中找到节点路径。但是,在删除jquery模块并再次安装/构建之后,我仍处于相同的情况。
contextify.node文件存在于指定的版本目录中,但我的脚本仍然无法加载它。
答案 0 :(得分:3)
所以这似乎是32位与64位的问题,并且与此节点的node.js v0.6.11特别相关。显然,Contextify是一个64位的库,但node.js 0.6.11的下载是一个32位可执行文件。降级到v0.6.10似乎对我有用。
不确定这对未来意味着什么,但这里是我为其他任何感兴趣的人找到的资源:
答案 1 :(得分:1)
我按照以下说明修正了上下文问题:
“对于习惯npm魔力的人来说,使用Benvie预先构建的二进制文件只需在https://github.com/Benvie/contextify/zipball/master下载ZIP文件,将其解压缩到node_modules文件夹中,然后将文件夹重命名为”请注意,此二进制文件仅适用于具有节点0.6的窗口,因此如果您通过源控件与非Windows用户共享node_modules文件夹,请务必小心。 (编辑:修正了下一条评论中指出的链接)“