process.env.EDGE_APP_ROOT что такое?

#javascript #node.js #edgejs

Вопрос:

Я почти закончил рефакторинг кода, взятого отсюда: https://github.com/agracio/edge-js-quick-start

Я добавил два класса, которые обрабатывают повторяющийся код, но я застрял в двух строках кода. Я ни за что на свете не могу понять, что они делают. Я также, кажется, не понимаю, для чего предназначен edge_app_root (это папка, но я подозреваю, что она предназначена для какого-то файла? )

process.env.EDGE_USE_CORECLR = 1; process.env.EDGE_APP_ROOT = базовый путь;

 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");
}); 

Спасибо, что уделили мне время!

Ответ №1:

Из Edge.js Прочитай меня:

Если вы используете .NET Core и используете .NET Core SDK и CLI, у вас должен быть файл project.json (спецификация здесь), в котором указаны зависимости для приложения. Этот список зависимостей также должен включать Edge.js пакет среды выполнения и, если вам нужно иметь возможность динамически компилировать свой код, пакет(ы) для компиляторов, которые вы планируете использовать, например Edge.js.CSharp. Вы должны были выполнить команды dotnet restore (для восстановления зависимостей) и dotnet build (для создания проекта и создания манифеста зависимостей) в каталоге этого проекта, чтобы создать .файл deps.json в папке bin/[конфигурация]/[фреймворк], т. е. bin/Релиз/netstandard1.6/MyProject.deps.json. Этот файл .deps.json должен либо находиться в текущем рабочем каталоге, в котором выполняется узел, либо вы должны указать его каталог, установив переменную среды EDGE_APP_ROOT. Например, если для проекта netstandard1.6 в c:DotNetMyProject каталог, вы бы запустили что-то вроде:

 set EDGE_APP_ROOT=c:DotNetMyProjectbinReleasenetstandard1.6
node app.js
 

Источник: https://github.com/tjanczuk/edge

По умолчанию edge ищет свои файлы конфигурации (например,. deps.json) в вашем текущем рабочем каталоге или у вас, если эти файлы находятся где-то в другом месте, вы бы указали каталог с помощью EDGE_APP_ROOT.

Комментарии:

1. Я исправил проблему, сначала используя «сборку dotnet» в оболочке питания. Затем я приступил к сравнению всего, что было между исходным образцом кода и моим переработанным кодом. Я обнаружил, что «var edge = требуется(‘edge-js’);» ДОЛЖНО появиться после установки переменных process.env.