diff --git a/packages/medusa/src/commands/exec.ts b/packages/medusa/src/commands/exec.ts index a4f76f93bb..70022062ce 100644 --- a/packages/medusa/src/commands/exec.ts +++ b/packages/medusa/src/commands/exec.ts @@ -1,6 +1,7 @@ import loaders from "../loaders" import express from "express" import path from "path" +import { existsSync } from "fs" import logger from "../loaders/logger" import { ExecArgs } from "@medusajs/types" @@ -9,12 +10,24 @@ type Options = { args: string[] } -export default async function script({ file, args }: Options) { +export default async function exec({ file, args }: Options) { logger.info(`Executing script at ${file}...`) const app = express() const directory = process.cwd() try { + // check if the file exists + const filePath = path.resolve(directory, file) + if (!existsSync(filePath)) { + throw new Error(`File ${filePath} doesn't exist.`) + } + + const scriptToExec = (await import(path.resolve(filePath))).default + + if (!scriptToExec || typeof scriptToExec !== "function") { + throw new Error(`File doesn't default export a function to execute.`) + } + // set worker mode process.env.MEDUSA_WORKER_MODE = "worker" @@ -23,14 +36,12 @@ export default async function script({ file, args }: Options) { expressApp: app, }) - const scriptFile = (await import(path.resolve(directory, file))).default - const scriptParams: ExecArgs = { container, args, } - await scriptFile(scriptParams) + await scriptToExec(scriptParams) logger.info(`Finished executing script.`)