Я не уверен, что задаю правильный вопрос, но у меня есть интерпретатор схемы в JavaScript Я запускаю его в Node.js, у меня есть такой файл:
мой исполняемый файл интерпретатора :
#!/usr/bin/env node
это просто выполнить (это часть кода, запустить просто оценить код схемы):
// parse return options and props and in _ array free args
const options = parse_options(process.argv.slice(2));
if (options.c) {
boostrap().then(function() {
run(options.c, env).then(print);
});
} else if (options._.length === 1) {
fs.readFile(options._[0], function(err, data) {
if (err) {
console.error(err);
} else {
boostrap().then(function() {
// ignore shebang
return run(data.toString().replace(/^#!.*\n/, ''), env);
});
}
});
}
мой код схемы в / home / kuba / projects / jcubic / gtk -lips / run.scm
#!/home/kuba/projects/jcubic/lips/bin/lips.js
(display lips.version)
(define gi (require "node-gtk"))
это для тестирования. Я попытался установить node-gtk в каталоге gtk-lips и попробовать его использовать. Но он не может его найти, поэтому в основном мне нужно изменить путь к узлу, чтобы использовать путь к исходному файлу run.scm, а не к моим исполняемым губам. js, если я установил node-gtk в jcubic / lips / он работает, я хочу, чтобы он был в каталоге gtk-lips.
Я попытался установить путь к require("/home/kuba/projects/jcubic/gtk-lips/node_modules/" + name")
; это единственный способ?
Это работает, но одна из проблем этого подхода в том, что он не найдет node_module, если я создам каталог в gtk-lips / foo / и попытаюсь запустить в этом каталоге.
Мой код на данный момент:
if (typeof global !== 'undefined') {
// ---------------------------------------------------------------------
global_env.set('require', doc(function(module) {
typecheck('require.resolve', module, 'string');
module = module.valueOf();
var root = process.cwd() + '/';
if (!module.match(/^\s*\./)) { // just in case if it's " ./"
root += "node_modules/";
}
return require(root + module);
}, `(require module)
Function to be used inside Node.js to import the module.`));
// ---------------------------------------------------------------------
}
Нужно ли искать первый модуль node_module в дереве, например, Node, или есть какой-то механизм, в котором вы могли бы изменить место поиска пакетов для узлов?