从C#应用程序中执行JavaScript并接收结果
我有一个在C#本地应用程序中想要使用的TypeScript模块,但我几乎不了解TypeScript/JavaScript语法,也没有时间从头学习,所以将其移植到C#中很困难。
因此,我考虑如果能直接使用TypeScript/JavaScript代码,问题是否会得到解决?于是我进行了调查。
Jering.Javascript.NodeJS 杰林·JavaScript·NodeJS
使用Jering.Javascript.NodeJS。
在这里的说明中,使用C#控制台应用程序执行Static API example非常清晰易懂。
在这个例子中,
string javascriptModule = @"
module.exports = (callback, x, y) => { // Module must export a function that takes a callback as its first parameter
var result = x + y; // Your javascript logic
callback(null /* If an error occurred, provide an error object or message */, result); // Call the callback when you're done.
}";
在這裡,我們將 JavaScript 部署為一個字串。
如果要加载并执行JavaScript文件,请参考”从文件中调用JavaScript”的说明。
Result? result = await nodeJSService.InvokeFromFileAsync<Result>("exampleModule.js", args: new[] { "success" });
以类似的方式选择文件。
如果JavaScript文件中存在import和export,则将文件的扩展名更改为mjs。但我在帮助文件中未找到解决方案,只能搜索问题并阅读它们才能知道,因此解决问题花费了很多时间。
将TypeScript转换为JavaScript
贾灵。Javascript.NodeJS似乎无法处理TypeScript(我已经尝试过,但找不到解决方法…)。因此,必须将其转换为JavaScript。虽然网络上有一些转换服务,但结果会有所不同。
在某个网站上转换的代码在执行时出现了错误。听说TypeScript是JavaScript的超集,所以我认为转换后的代码应该没有问题,但是情况并非如此。
在将出错的文件转换为TypeScript到JavaScript编译器后,问题得到了解决。(我尚未查询有关此站点的目标和模块的信息,因此不知道什么是适当的)
使用VisualStudio进行转换。
记事
我最初的目標(在C#應用程序中使用一個TypeScript模塊)沒有實現。由於需要修改JavaScript代碼的部分很多,最終無法應對因不熟悉JavaScript而產生的問題。
确认环境
-
- Jering.Javascript.NodeJS 7.0.0
- .NET 7