从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进行转换。

image.png

记事

我最初的目標(在C#應用程序中使用一個TypeScript模塊)沒有實現。由於需要修改JavaScript代碼的部分很多,最終無法應對因不熟悉JavaScript而產生的問題。

确认环境

    • Jering.Javascript.NodeJS 7.0.0

 

    .NET 7
广告
将在 10 秒后关闭
bannerAds