#javascript #node.js
#javascript #node.js
Вопрос:
У меня есть модуль, который экспортирует метод, используемый в тестировании JEST. Я тоже хочу запустить его из командной строки.
async function doRun() { /* do something */}
exports.doRun = doRun;
Это хорошо работает с JEST, где я импортирую модуль и выполняю метод. Но когда я вызываю его с node module.js
помощью, это не имеет никакого эффекта, потому что метод не выполняется в теле JS. Чтобы исправить это, я должен добавить:
doRun().then(() => console.log('finished'));
что заставляет код работать из CLI, но он выполняется тоже в шутку сразу после импорта.
Я прав, что мне нужно создать новый файл, который импортирует модуль и запускает код только для CLI?
const module = require('module.js')
doRun().then(() => console.log('finished'));
а затем запустить node module_cli.js
?
Комментарии:
1. почему есть downvote?
2. Черт возьми, я тоже этого не понял. У Node есть множество опций, я бы не удивился, обнаружив одну, в которой говорилось: «загрузите этот модуль, затем выполните этот код». (Я этого не делал, но это меня бы не удивило. 🙂 )
Ответ №1:
В значительной степени, да. 🙂
Либо это, либо используйте переменную среды
async function doRun() { /* do something */}
exports.doRun = doRun;
if (process.env.AUTO_RUN === "Y") {
doRun().then(() => console.log('finished'));
}
и запустите его так на * nix:
AUTO_RUN= Y узел module.js
… или в Windows в соответствии с этим это было бы:
cmd / V / C "set AUTO_RUN=Yamp;amp;node module.js "
Вы также можете использовать стандартную NODE_ENV
переменную среды. Я не углубился в шутку, но он может установить его на "testing"
или что-то в этом роде…