2016-08-19 4 views
0

На моем хосте Ubuntu 14 я пытаюсь использовать модуль узла с именем node-msmq, который предоставляет мост MS MSQQ . Этот модуль зависит от установки среды .NET. У меня есть компилирует .NET на Ubuntu с помощью Git репо, и иметь его в/дома/убунту/CoreCLR:.NET Core на Ubuntu - что является правильным значением для переменной env CORECLR_DIR?

[email protected]:~/coreclr$ pwd 
/home/ubuntu/coreclr 

[email protected]:~/coreclr$ ls 
all.locproj   clrdefinitions.cmake crossgen.cmake      generateversionscript.awk README.md 
bin     clr.desktop.props  dac.cmake       global.json     run.cmd 
build.cmd    clr.native.targets  dac.props       init-tools.cmd    run-cppcheck.sh 
build-packages.cmd  clr.props    definitionsconsistencycheck.cmake init-tools.sh    run.sh 
build-packages.sh  clr.targets   dir.props       LICENSE.TXT     sanitizerblacklist.txt 
build.proj    cmake.definitions  dirs.proj       netci.groovy    src 
build.sh    CMakeLists.txt   dir.targets      oacr.cfg     sync.cmd 
build-test.cmd   CODE_OWNERS.TXT  dir.traversal.targets    packages     sync.sh 
BuildToolsVersion.txt compileoptions.cmake Documentation      partition.settings.targets tests 
clean.cmd    config.json   DotnetCLIVersion.txt    PATENTS.TXT     THIRD-PARTY-NOTICES 
clean.sh    CONTRIBUTING.md  enablesanitizers.sh    perf.groovy     Tools 
clr.coreclr.props  cross     functions.cmake     publish-packages.cmd  UpdateDependencies.ps1 
clr.defines.targets crosscomponents.cmake generateexportedsymbols.awk  publish-packages.sh   UpdatePublishedVersions.ps1 

мой узел сценарий выглядит очень просто:

const msmq = require('node-msmq'); 

//var queue = msmq.openOrCreateQueue('.\\Private$\\MyAwesomeQueue'); 

// Send message to queue 
//queue.send('Hello from Node.JS!'); 

Когда я запускаю этот код, Я получаю сообщение об ошибке, жалуясь, не имеющие окр вар CORECLR_DIR установлен правильно:

[email protected]:~/dev/node/msmq-producer$ node producer.js 

module.js:355 
    Module._extensions[extension](this, filename); 
          ^
Error: Unable to load the CLR from the directory (��S) specified in the CORECLR_DIR environment variable. 
    at Error (native) 
    at Module.load (module.js:355:32) 
    at Function.Module._load (module.js:310:12) 
    at Module.require (module.js:365:17) 
    at require (module.js:384:17) 
    at Object.<anonymous> (/home/ubuntu/dev/node/msmq-producer/node_modules/node-msmq/node_modules/edge/lib/edge.js:53:8) 
    at Module._compile (module.js:434:26) 
    at Object.Module._extensions..js (module.js:452:10) 
    at Module.load (module.js:355:32) 
    at Function.Module._load (module.js:310:12) 

в настоящее время у меня есть эта переменная устанавливается:

[email protected]:~/dev/node/msmq-producer$ echo $CORECLR_DIR 
/home/ubuntu/coreclr 

, что, по-видимому, является неправильным значением.

Какое значение я должен установить, чтобы обнаружить среду моего coercer .NET на Ubuntu?

+0

Путь к CoreCLR.dll который, скорее всего, находится в/home/ubuntu/coreclr/bin – Joe

+0

Почему вы компилируете CoreCLR вместо использования пакета? – svick

ответ

0

Эта ошибка не исходит от CoreCLR.

Основываясь на вашем стеке, похоже, вы используете edge.js. Я просто смотрел на GitHub README for edge, и он говорит следующее об этом переменном окружении (я рекомендую прочитать весь файл README):

края попытается найти .NET Core, выполнение в следующих местах:

  • путь в переменной в CORECLR_DIR среде, если это предусмотрено
  • текущий каталог
  • каталог, содержащий edge_*.node
  • Справочники в переменной PATH. После того, как каталог, содержащий dotnet исполняемым расположен, мы затем сделать следующее, чтобы решить, какой вариант структуры (вы можете иметь несколько установлена ​​сразу), чтобы загрузить
    • Если была задана переменная CORECLR_VERSION среды, мы попробуйте загрузить эту версию
    • Else, если project.json/*. deps.json имеет ссылку на Microsoft.NETCore.App, указывая, что он был построен для конкретной рамочной версии, мы стараемся, чтобы загрузить эту версию
    • в противном случае , мы выбираем максимальная установленная версия

Так самый простой ответ на ваш вопрос, чтобы установить эту переменную в каталог, содержащий libcoreclr.so, или просто запустить из этого каталога (сделать его текущий каталог).