问题标签 [contextify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8130 浏览

javascript - Node.js jsdom 错误

我正在尝试让 jsdom 工作:)

这是代码:

这是错误:

我检查了页面是否被获取以及 jquery 库是否被解析——它们是。

我们可以看看 jsdom.js 的实现:

似乎 .createWindow() 不成功......

我在Cloud9上运行它。

欢迎任何帮助。

0 投票
1 回答
71 浏览

macos - 在 Mac 上运行时分配失败

我有一个在 PC 和 Linux 上运行良好的 node.js 项目,但是在 Mac(Mountain Lion)上运行时,jQuery 模块不起作用。任何对窗口对象属性的赋值都会被忽略。

那是

会抛出异常。任何解决它的想法将不胜感激

对象的原型是undefined我希望这两件事是相关的。窗口对象是使用 jsdom.createWindow() 创建的(反过来又返回 doc.parentWindow)

似乎是由下面的行引起的

它返回实际对象(没有原型)。

0 投票
1 回答
2645 浏览

jquery - node.js:jsdom 的问题 - jQuery 对象返回未定义

我有兴趣为其中一个项目进行一些服务器端 DOM 操作,因此我决定看一下node.js,尤其是jsdom。我对node.js完全陌生,所以我的错误可能很明显,但无论如何我都无法在任何地方找到我的问题的解决方案......

首先,我在本地运行 Windows 上的节点,并且还使用在线 IDE cloud9

值得一提的是,我在为 node 安装最新的 jsdom 包(即 0.2.15)时遇到了麻烦,因为所需的依赖contextify无法在 Windows 下编译(需要 C++ 和 Python,而且我发现 npm 不支持构建 C++ 包) . 所以我采取了两种替代方法:

  1. 我安装了一个不依赖于 contextify 的旧版本,即jsdom@0.2.1。这是我目前拥有的 npm 列表

    当我尝试运行从jsdom github repo cloud9 获取的简单测试脚本时,返回了这个警告

    我试图解决这个问题,将所有提到的 sys 替换为 util,错误消失了......(仍然不太确定这是正确的做法......)。所以,最后当我尝试运行这个片段时

    我发现了window.$ === undefined。尝试在 cloud9 上使用节点 v0.6.x 和节点 v0.4.x 以及在本地使用节点 v0.8.7 运行。

  2. 我尝试做的另一件事是安装最新的 jsdom@0.2.15,从这里获取已编译的 contextify ,安装绑定并将其添加到 contextify/node_modules,因为 contextify 依赖于它。我根本无法使它工作=(没有浪费太多时间,因为这似乎是一种错误的方法,并且 contextify 不是最新的。

    这是 npm 列表

    /li>

另外,这是我的cloud9 工作区,不要害羞。

任何帮助表示赞赏。也许还有其他更好的方法来完成我想要的。

谢谢。

0 投票
1 回答
3931 浏览

javascript - 在 Windows 7 上安装 contextify 错误:`gyp` 失败,退出代码:2

这是我跑步时得到的npm install contextify

我有 node x64 v0.8.16 和 node-gyp v0.8.1

我有 Python 2.7.3、.Net Framework 4、Microsoft Visual Studio C++ 2010 Express、Windows 7 64 位 SDK 和 Microsoft Visual C++ 2010 Service Pack 1 编译器。

我已经重新启动了我的电脑。我错过了什么?

0 投票
1 回答
304 浏览

node.js - Azure 上的 JSDom(本机 Node.js 模块)

我无法让依赖于 JSDo 的 nodejs 应用程序在 Azure 上工作,因为它依赖于本机模块 - Contextify,我了解 Azure 不提供本机模块的编译。

但是根据Azure 文档

由于 Windows Azure 云服务依赖于作为应用程序一部分部署的 node_modules 文件夹,因此作为已安装模块的一部分包含的任何本机模块都应该在云服务中工作,只要它是在 Windows 开发系统上安装和编译的。

它在我的开发盒上运行良好,因为它是在 npm 安装期间编译的,我不明白为什么它不能在 Azure 上运行,因为我提供了编译版本?如果它适用于我的 Windows 开发盒,则编译显然是成功的。我从本地 git 存储库部署到天蓝色,所以我想知道当我提交时编译的文件是否被遗漏了?

0 投票
1 回答
1153 浏览

node.js - 使用 setTimeout 调度的 Node.js Fiber 和代码会导致崩溃

我正在使用Fibers来解决有关如何让 node.js 中的事件循环控制的问题,暂停一些同步代码的执行。大多数情况下,这很好用,但是我遇到了一个奇怪的崩溃,但是我找不到它的原因。

设置

有三个过程:

  • 一个主服务器进程,它接收要检测和执行的代码。当它接收到执行它的新代码时,使用 child_process.fork() 生成
  • 一个执行过程。这会检测接收到的代码以不时调用特定的回调来报告执行代码中发生的情况。然后它在使用Contextify创建的沙箱中执行代码。有时,这些报告包含有关代码中发生的行和列的不正确位置信息。在这种情况下,需要一个源映射来将检测代码中的位置映射到原始代码中的位置。但是计算这个源映射需要大量的时间。因此,在开始执行之前,执行过程会产生
  • 源映射计算过程。这只是获取原始代码和检测代码并计算源映射。完成后,它将完成的源映射发送到执行进程并退出。

如果执行过程在执行完成之前需要回调中的源映射,它将使用 Fiber.yield() 将控制权交给事件循环,从而暂停执行。当执行进程接收到数据后,它会使用 pausedFiber.run() 继续执行。

这是这样实现的:

总结一下:当收到新代码时,会创建一个新进程来执行它。这个过程首先检测然后执行它。在这样做之前,它会启动第三个过程来计算代码的源映射。检测代码调用名为的函数callback在上面的代码中,将消息传递给运行时报告执行代码的进度。有时必须调整这些,需要调整的一个示例是“控制台日志”消息。要进行这种调整,需要通过第三个过程计算的源图。当回调需要源映射时,它调用 getSourceMap() 等待 sourceMap 进程完成其计算并在该等待时间内将控制权交给事件循环以使其能够从 sourceMap 进程接收消息(否则事件循环将是被阻止并且无法接收到任何消息)。

传递给回调的消息首先存储在一个数组中,然后出于性能原因作为批处理发送到主进程。但是,我们不希望主进程等待消息的时间过长,因此除了在达到阈值时发送一批消息外,我们还安排了一个函数sendMessagesWithEventLoopTurnAround()在事件循环中运行并检查是否有消息要发送。这有两个优点:

  1. 当执行进程正在等待源映射进程时,它可以利用这段时间发送它已经得到的消息。因此,如果 sourceMap 进程需要几秒钟才能完成,则主进程不必为已创建并包含正确数据的消息等待相同的时间。
  2. 当执行代码在事件循环中只生成非常少的消息时(例如,通过调度的函数setTimeInterval(f, 2000)每次执行只创建一条消息),它不必等待很长时间直到消息缓冲区已满(在本例中为 200 秒)但每 10 毫秒接收一次有关进度的更新(如果有任何变化)。

问题

什么有效

此设置在以下情况下工作正常

  1. 我不使用纤维和单独的过程来计算源图。相反,我在执行代码之前计算源映射。在这种情况下,我尝试执行的所有代码都按预期工作。
  2. 我确实使用了光纤和一个单独的进程并执行我不需要源映射的代码。例如 var a = 2;

    setTimeout(function () { var a = 2;}, 10)

在第一种情况下,输出如下所示。

  1. 我确实使用了纤维和一个单独的进程和代码,我需要源映射但不使用事件循环,例如 console.log("foo");

在这种情况下,输出如下所示:

  1. 我确实使用了 Fiber 和一个单独的进程和代码,我需要源映射并使用事件循环,但只有在源映射计算已经完成时才需要源映射(因此无需等待)。

例如

在这种情况下,输出如下所示:

什么不起作用

只有当我使用纤维和使用事件循环但在完成之前需要源映射的单独进程和代码时它才会中断,例如

然后输出如下所示:

这里崩溃的进程是执行进程。但是,我不知道为什么会发生这种情况或如何追查问题。正如你在上面看到的,我已经添加了几个日志语句来找出发生了什么。我也在听执行过程中的“未捕获的异常”事件,但这似乎没有被触发。

另外,我们最后看到的日志消息不是我的,因为我在日志消息前面加上了某种描述字符串,所以它是由 node.js 自己创建的。我既不明白为什么会发生这种情况,也不明白退出代码 8 是什么,甚至我还能做些什么来缩小原因。任何帮助将不胜感激。

0 投票
3 回答
19944 浏览

node.js - 安装 contextify 时出错-node-gyp 重建失败

编辑

我升级了节点并运行了“npm install -g contextify”它看起来安装得很好(没有错误),但是输入“which contextify”什么也没返回。安装 contextify 时的消息:

原来的

我在使用 npm 安装 contextify 时遇到问题:

并收到以下错误消息:

有人知道这里发生了什么吗?我读到它可能与我的 PYTHON PATH 有关,但我不确定它应该是什么样子。

谢谢您的帮助。

0 投票
3 回答
17773 浏览

windows - 如何让 node-gyp 在 Windows 7 平台上工作

在尝试编译标准“Hello World”示例 [2] 时,我尝试在 Windows 7 + Node.js 平台上使用 node-gyp 失败了 [3]。注意:在尝试使用或不使用“-g”时,node-gyp 以类似的方式 [3] 失败npm install contextify,因此这些可能是相关问题。

配置:

  • 节点gyp 0.12.2
  • 视窗 7 x64 SP1
  • 蟒蛇 2.7
  • Node.js 0.10.24
  • 每个 [1] 的 Visual Studio 2010(也在 2012 年尝试过)
  • VS SDK 7.1 per [1](尝试 32 和 64 位版本)
  • 从标准 Windows 命令提示符或 SDK7.1 cmd 提示符运行 node-gyp

参考文献:
[1] https://github.com/TooTallNate/node-gyp/wiki/Visual-Studio-2010-Setup

[2] https://github.com/joyent/node/tree/master/test/addons/hello-world

[3] "hello world"[2] 项目上的 "node-gyp rebuild" 产生以下 2 个错误:

....node-gyp\0.10.24\deps\uv\include\win.h(8738):错误 C2371:'SYSTEM_POWER_STATUS':重新定义;不同的基本类型 [...\build\test.vcxproj]

....node-gyp\0.10.24\deps\uv\include\mswsock.h(27):致命错误 C 1083:无法打开包含文件:'_mingw.h':没有这样的文件或目录 [... \build\test.vcxproj]

并遵循 2 个警告:

....node-gyp\0.10.24\deps\uv\include\win.h(13513): 警告 C4005: 'UNALIGNED' : 宏重新定义 [...\build\test.vcxproj]

....node-gyp\0.10.24\deps\uv\include\mswsock.h(26):警告 C4068:未知编译指示 [...\build\test.vcxproj]

完整的跟踪如下:

0 投票
1 回答
662 浏览

node.js - 构建 contextify 失败并出现错误:字段“时间”的类型不完整

背景:jquery用来测试 JavaScript 代码(使用 jQuery 对象)nodeunit。对于 jquery,我需要jsdom提供一个window对象。构建 jsdom 失败,因为它需要contextify,它不是在 64 位 Debian 上构建的。我在标准 Ubuntu 和 Debian 版本的 Linux Mint 上对其进行了测试,结果相同。

问题: node.js 在这两种情况下都是 0.11.11-release,并且是从 git 存储库构建的。在构建时timeit_interval、 和更多是不完整的。为什么?

完整的构建日志在这里: http: //pastebin.com/iTq75435它以:

0 投票
3 回答
7506 浏览

node.js - 安装 NodeJS contextify 包会产生错误

我已经进入 NodeJS 1 小时,所以请耐心等待。我的项目需要的包之一是 JSDom。在浏览了大部分 Internet 之后,我发现 JSDOm 有一个称为 contextify 的依赖项,它在 JSDom 安装本身中以某种方式进行了处理。所以这就是我要做的:

一切都很好,直到我得到以下信息:

难倒!!!

我发现要在 Ubuntu 上运行 contextify,我必须有 make、python 和 G++。我都有。那么我到底错过了什么?

仅供参考,JSDOM 安装尝试之前的命令是:

我也尝试了以下方法:

在第二个命令中,我遇到了同样的问题。