问题标签 [edge.js]

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 投票
1 回答
374 浏览

node.js - Visual Studio 2013 NodeJS 工具,TypeScript,保留评论

这就是我的设置。VS 2013,带有 Node JS 工具和 Typescript。添加 .ts 文件的处理没有问题。我在 npm 集成方面遇到了一些问题,但我已经能够解决它们。

我还添加了 EdgeJS。它还不支持 TypeScript,但我只是在我的 TS 文件中使用常规 JS 编写 EdgeJS 调用。问题是 EdgeJS 允许您以几种不同的方式编写 CS 函数。

一种方法如下所示,其中整个主体都包含在注释块中:

不幸的是,默认情况下,TS 编译器会删除这些注释,我无法在此项目类型中找到更改该行为的方法。

我只是运气不好(现在)?

0 投票
1 回答
564 浏览

javascript - 如何从访问 MSSQL 的 edge.js func 返回数据?

这是一个更一般的 JS 问题,而不是特定于 edge.js。我想通过 edge.js 玩 SQL Server 访问。基于其 GitHub 站点的以下片段

我写了以下内容来访问我自己的数据库:

我的问题是,我怎样才能返回结果,logResult而不仅仅是使用该函数内的数据?而不是_.each(result, ...)现在记录到控制台的构造,我宁愿有类似的东西return _.map(result, ...)返回一个 Thing 对象数组。但是因为该函数是 getThingsList 的回调,所以我无处可放结果。

鉴于我如何构建代码,似乎我唯一的选择是在外部范围内声明一个数组并从内部推送到它logResult。我确定我做错了,但我看不到如何重组。有什么建议么?

0 投票
4 回答
27140 浏览

node.js - 如何强制阻止 Node.js 进程终止?

TL;博士

强制保持 Node.js 进程运行的最佳方法是什么,即防止其事件循环运行为空,从而防止进程终止?我能想到的最好的解决方案是:

如果您保持间隔时间足够长,这将保持间隔运行而不会造成太多干扰。

有更好的方法吗?

问题的长版本

我有一个使用Edge.js注册回调函数的 Node.js 脚本,以便可以从 .NET 中的 DLL 内部调用它。该函数将每秒调用 1 次,发送一个简单的序列号,该序列号应打印到控制台。

Edge.js 部分很好,一切正常。我唯一的问题是我的 Node.js 进程执行了它的脚本,然后它用完了要处理的事件。它的事件循环为空,它只是终止,忽略了它应该一直运行以便能够接收来自 DLL 的回调的事实。

我的 Node.js 脚本:

我的 C# 代码(DLL):

我能想出的唯一解决方案是注册一个间隔很长的计时器来调用一个空函数,只是为了让调度程序保持忙碌并避免让事件循环为空,以便进程永远运行。

有没有比我做得更好的方法?即,保持进程运行不必使用这种“黑客”?

0 投票
1 回答
938 浏览

c# - 为 .net dll 指定 bindingRedirect

我有一个使用 log4mongo 的 .net dll。在普通的 .exe 中,为了让 mongo 找到适用的 log4net .dll,它当前需要在其 .config 文件中指定一个 bindingRedirect:

不幸的是,我没有 .config 文件来指定它。常见的答案是把它放在执行程序的初始 .exe.config 中,但是这个 .net dll 是通过 node.js 通过 edge.js 运行的。有没有办法可以在运行时或通过其他一些预构建设置指定 dll 绑定重定向?

0 投票
1 回答
537 浏览

node.js - 是否可以在 32 位环境中运行 Edge.js?

我在这里查看 Edge.js 文档,说明适用于 64 位 Ubuntu。是否可以让 Edge.js 在 32 位 Ubuntu 上运行?

0 投票
1 回答
459 浏览

javascript - “Node.js / Edge.js - 将 JS 变量插入 SQL”第 2 部分

这是原始问题

好的,我正在使用 Node.js 和 Edge.js 将值插入 SQL 数据库。第一次尝试是直接插入硬编码值:

当然,这种硬编码插入按预期工作。正如我之前的问题的答案所见,将对象传递给函数允许 SQL 语句通过 @ 识别对象的名称/值对,从而允许动态值分配:

按预期工作。我想做的是通过同一个rowObj提供的属性使表和列也可变。我试过了:

但这不起作用。我尝试让表格自己动态化,并让列自己动态化,但这也不起作用。

注意:我不懂 SQL,我不知道 Node.js/Edge.js 的局限性,而且我对一般编程很陌生(所以如果我的命名法不一致/错误,请告诉我,但请不要撕裂我)我只是想知道我正在尝试做的事情是否可以完成。

0 投票
0 回答
707 浏览

c# - 使用 edge.js 时捕获所有未处理的 C# 异常

Edge.js 允许我们从 node.js 调用 C# dll。正因为如此,我们有很多进入 dll 的入口点。我想捕获所有未处理的异常,以便我可以正确记录它们,然后将它们重新扔回 node.js(处理它们的地方)。这可能吗?

对于无 UI 的应用程序,我通常会通过以下方式执行此操作:

不幸的CurrentDomain_UnhandledException是,当调用异常时,处理程序永远不会被命中。

更新更多信息:

这基本上是该测试的 C# 代码归结为:

node.js 服务器启动并通过 edge.js 调用 ExceptionTest。在调试器中,CurrentDomain_UnhandledException没有命中断点,在调试器之外,该方法没有记录任何内容,“测试以验证日志记录”按预期记录。

0 投票
1 回答
345 浏览

edge.js - edge.js - 无法在参数具有空值的情况下运行参数化查询

我正在尝试使用 edge.js 从 Node.js 应用程序将数据写入 SQL Server。所讨论的数据具有一定的可变性,因此某些属性通常是未定义的。这些是可选值,并且在数据库中以这样的形式表示,例如referrer (nvarchar(255), null).

处理数据时,我将其映射到预定义的模型类,并将undefined属性显式设置为null. 这可确保查询所需的所有参数都存在。但是,当我运行查询时,edge.js 错误抱怨未提供参数。如果我将null值更改为空字符串,它可以工作,但这显然是不可取的。示例代码...

抛出的错误是

我认为这是 edge.js 中的问题/限制。例如,在 C# 中,您可以将null参数设置为DBNull.Value而不是null直接设置,但在 JavaScript 中没有明显或记录在案的方法来实现这一点。有什么办法可以使这项工作?

(当然,我可以使用 edge 写出一些 C# 代码来进行 DB 写入,但这会涉及更多,所以如果可能的话,我更愿意像上面那样做。)

任何提示将不胜感激。谢谢

0 投票
2 回答
2342 浏览

node.js - 在 node.js 中加载已编译的 Dust.js 模板

我正在尝试创建一个函数,该函数采用模板名称并能够将呈现的模板作为字符串返回。我正在使用linkedin的灰尘版本。我正在将模板(使用grunt-dustjs任务)预编译成一个文件,如下所示:

我认为我的最终问题是,我如何从节点加载/使用这些模板(它们在它们的单个文件中)?还是我错误地编译它们?我应该将这些 IIFE 包装在 module.exports 中吗?我这样做了,但什么也没做。这就是我在 .js 文件头部需要模板文件的方式:

当我通过“var templates = require(...);”按原样加载模板文件时 直接调用或 require() 它我首先得到一个“未定义灰尘”错误,然后当我添加“vardust = require('dustjs-linkedin');”时 到模板文件我收到一个错误,指出对象没有写入方法。

问题是,为什么它认为没有“写”方法?试图加载这个我做错了什么?理论上,每个已编译的模板都应该在加载文件并执行 IIFE 时将自己注册到灰尘缓存中,但它一直抛出“没有方法'write'”错误。即使我将这些模板直接复制/粘贴到我试图加载它们的 .js 文件中,它也会这样做。我应该用“module.exports”代码包装编译的模板文件吗?也许在函数内部?我不知道为什么这不起作用,甚至不知道如何正确编译/加载模板。任何帮助表示赞赏!谢谢!


编辑 原始模板的要点


编辑

这是下面对公认答案的一个很好的解释。然而,我仍然有一个问题,但它似乎是在没有正确理解调用 .render() 时灰尘的作用以及我必须在 Edge.js/.NET 中执行此操作的交集。

注意:编译后的模板,带有分号 ;),位于顶部需要灰尘库的文件中,否则只是前面提到的 IIFE。在我的 Mac 上,在 Node.js 中,以下工作:

我可以在缓存中看到模板。但是,如果我随后将“myFunction”更改为此它仍然会看到缓存但返回未定义:

这是一个问题。当我在 .NET 上下文中使用 Edge.js 时引入的另一个问题是,相同的设置不会像在我的 Mac 上的直接 node.js 环境中那样将模板加载到缓存中。我可以很好地加载文件,我什至可以将它作为字符串输出,但是当我查看dust.cache(由于console.log 无法在.NET 上下文中工作而导致的PITA)时,它返回为空。正是这个问题导致我尝试将编译后的模板转储到一个数组中,然后遍历数组,在每个数组项上调用dust.loadSource,但这也不想工作。

我正在清理项目以在今天某个时候发布到 GitHub。

0 投票
1 回答
396 浏览

.net - Edge.js - 从已编译的 DLL 访问 SQL 数据库

好的,所以我知道 Edge-SQL 让您直接在 node.js 代码中编写 T-SQL 语句。

惊人的。

但是我有旧版 DLL,它们可以自己访问数据库,我需要将其集成到 node.js 应用程序中。基本上,我有一组 DLL 负责从我想通过 .NET 异步方法公开的数据库构建数据对象,这些方法当前将数据对象传递回 ASP.NET 前端。目标是能够使用来自遗留应用程序的相同数据 DLL 的 node.js 前端替换 ASP.NET 前端。

我的问题是:

  1. 是否可以使用 edge.js 在 node.js 上下文中使用这些 DLL?如果是这样,
  2. 这样做正确传递连接字符串的唯一问题是什么?和
  3. 我将如何传递通常位于 web.config 中的数据库连接以供那些 DLL 使用?

编辑

类似于这个问题:Using a .NET DLL in Node.js / serverside javascript除了没有关于如何处理连接字符串的细节和这个问题Connect to SQL Server database from Node.js

显然,这两者可以结合使用,但很好奇如何使其与来自已编译 DLL 的 DB 调用一起工作,但使用 DLL 的 Web 应用程序是 express.js/node.js 应用程序。


编辑 2

澄清一下,目标是拥有一个 .cs/.csx 文件,我可以从中调用方法,从节点传入参数(来自 URL),然后传递给 .cs/.csx 文件中的方法调用项目中包含的预编译 DLL。正是那些对 DB 进行调用的 DLL 需要传入连接字符串。