Проблема
У меня есть скрипт, который работал, запустив node index.js
. Поскольку я пытаюсь эмулировать структуру функции AWS Lambda, я перенес текущую логику кода в функцию, определенную как export async function handler(...) {
. Эту функцию можно запустить через командную строку с помощью команды node -e "import('./index.js').then(module => module.handler())"
.
Желаемый результат
Я хотел бы запустить команду: node -e "import('./index.js').then(module => module.handler())"
, определив ее в сценариях npm. Предпочтительно, чтобы он запускался с помощью npm start
.
Попытки Решений
В package.json
:
{
...
"scripts": {
"start": "...",
},
...
}
Попытки были предприняты с "start": "..."
, установленными на эти, возвращали ошибки при выполнении:
"node -e 'import(\\'./index.js\\').then(module => module.handler())'"
"node -e 'import(\\'./index.js\\').then(function (module) { module.handler(); })'"
"node --eval='import(\\'./index.js\\').then(module => module.handler())'"
"node --eval='import(\\'./index.js\\').then(function (module) { module.handler(); })'"
Попытки, сделанные с ними, казалось, не оценивали:
"node -e 'import(\\'./index.js\\').handler()'"
"node --eval='import(\\'./index.js\\').handler()'"
"node -e 'require(\\'./index.js\\').handler()'"
"node --eval='require(\\'./index.js\\').handler()'"
Я понимаю, что это избыточно, я пытаюсь быть тщательным. Любая помощь приветствуется.
3 ответа
Я бы просто создал scripts/start.js
import { handler } from './index.js'
handler()
А потом...
{
...
"scripts": {
"start": "node scripts/start.js"
},
...
}
Это должно работать:
"start": "node -e \"import('./index.js').then(module => module.handler())\""
На основе этого ответа https://stackoverflow.com/a/68848622/5089567
Вы можете добавить этот код в свой скрипт:
import { pathToFileURL } from 'url'
if (import.meta.url === pathToFileURL(process.argv[1]).href) {
handler()
}
А затем просто запустите файл, например
node index.js
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
node -e
, в файл JavaScript и запустите этот файл JS, используяnpm start
. Или напрямую с помощьюnode
.node -e ...
и написанием стартового сценария на будущее?