我正在尝试使用edge.js在 C# 中使用 node.js 模块。
我可以访问模块的属性,但不能访问方法。
using System;
using System.Threading.Tasks;
using EdgeJs;
class Program
{
static void Main(string[] args)
{
Start().Wait();
}
public static async Task Start()
{
var func = Edge.Func(@"return require('../require.js')");
var invoke = func.Invoke(new { });
var require = (dynamic)invoke.Result;
Console.WriteLine(require.answer1); // answer 1
var deleg = require.answer2;
Console.WriteLine(deleg);
var task = deleg.Invoke(1);
Console.WriteLine(task);
// var result = await task.Run(); // error
// Console.WriteLine(result);
}
}
需要.js
module.exports = function (data, callback) {
var module = require('./module');
var result = module;
callback(null, result);
};
模块.js
exports.answer1 = "answer 1";
exports.answer2 = function () {
return "answer 2";
};
有没有办法可以从 C# 调用 node.js 中的函数并访问“答案 2”?
这里的错误:
answer 1
System.Func`2[System.Object,System.Threading.Tasks.Task`1[System.Object]]
System.Threading.Tasks.Task`1[System.Object]
Unhandled Exception: System.AggregateException: One or more errors occurred. ---
> Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: No overload for method
'Run' takes '0' arguments
at CallSite.Target(Closure , CallSite , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T
0 arg0)
at Program.<Start>d__d.MoveNext() in c:\Users\admin\Documents\Visual Studio 2
013\Projects\snippets\snippets\Program.cs:line 26
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceled
Exceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationTo
ken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at Program.Main(String[] args) in c:\Users\admin\Documents\Visual Studio 2013
\Projects\snippets\snippets\Program.cs:line 10
Press any key to continue . . .