我几乎完成了从这里获取的重构代码:https://github.com/agracio/edge-js-quick-start
我已经添加了两个处理可重复代码的类,但我被两行代码卡住了。我一辈子都搞不清楚他们是做什么的。我似乎也不明白edge_app_root的目标是什么(这是一个文件夹,但我怀疑它的目标是某个文件?)
process.env.EDGE_USE_CORECLR=1;process.env.EDGE_APP_ROOT=baseNetAppPath;
const path = require('path');
var version = process.argv[2];
// print process.argv
process.argv.forEach((val, index) =>
{
console.log(+index + ":" + val);
});
console.log();
//by default the core will be used (and standard is not supported)
var namespace = 'QuickStart.' + version.charAt(0).toUpperCase() + version.substr(1);
if (version === 'core')
{
version = 'coreapp';
console.log("coreapp");
}
const baseNetAppPath = path.join(__dirname, '/src/' + namespace + '/bin/Debug/net' + version + '2.0');
process.env.EDGE_USE_CORECLR = 1;
if (version !== 'standard')
{
console.log("version is not standard")
process.env.EDGE_APP_ROOT = baseNetAppPath;
console.log("process.env.EDGE_APP_ROOT:n" + baseNetAppPath+"n");
}
var edge = require('edge-js');
var baseDll = path.join(baseNetAppPath, namespace + '.dll');
console.log(`basedll: ${baseDll}`);
//load functions from namespaces.cs files
var localTypeName = namespace + '.LocalMethods';
var namespace2 = namespace + '.InnerMethods';
console.log(`Using basedll:${baseDll}n namespace2:${namespace2}n`);
var getList = edge.func({
assemblyFile: baseDll,//should be the same
typeName: namespace2,//namespace + '.InnerMethods',
methodName: "GetList"
});
getList('', function (error, result)
{
if (error) throw error;
console.log(namespace + '.InnerMethods');
console.log(result + "n");
});
谢谢你抽出时间!
从Edge.js自述:
如果您正在使用.NET Core并使用.NET Core SDK和CLI,您必须有一个project.json文件(此处为规范),该文件指定应用程序的依赖关系。此依赖项列表必须还包括Edge.js运行时包,如果您需要要动态编译代码,编译器的包您计划使用的,如Edge.js.CSharpdotnet restore(恢复依赖项)和dotnet build(恢复依赖关系)构建您的项目并生成依赖项清单)命令该项目的目录下生成.deps.json文件bin/[配置]/[框架],即。bin/Release/netstandard1.6/MyProject.deps.json.This.deps.json文件必须在执行节点的当前工作目录中在或中,必须通过设置EDGE_APP_ROOT指定其目录环境变量。例如,如果中的netstandard1.6项目在c:\DotNet\MyProject目录中,您可以运行以下内容
set EDGE_APP_ROOT=c:DotNetMyProjectbinReleasenetstandard1.6 node app.js
来源:https://github.com/tjanczuk/edge
默认情况下,edge会在当前工作目录中查找其配置文件(例如:.deps.json),或者如果这些文件在其他地方,则会使用edge_APP_ROOT指定该目录。