diff --git a/lib/configuration/read.js b/lib/configuration/read.js index e57bd830b..cc7fff9e1 100644 --- a/lib/configuration/read.js +++ b/lib/configuration/read.js @@ -56,12 +56,16 @@ const parseConfigurationFile = async (configurationPath) => { case '.ts': case '.mts': { try { - const { createJiti } = require('jiti'); - const jiti = createJiti(null, { interopDefault: true }); + /** + * Jiti does not support `tsconfig.paths`, so we need to use tsx to load the configuration file. + * @see https://github.com/unjs/jiti/issues/373 + * @see https://tsx.is/dev-api/tsx-require + */ + // eslint-disable-next-line import/no-unresolved + const tsx = require('tsx/cjs/api'); + const content = tsx.require(configurationPath, __filename); - const content = await jiti.import(configurationPath, { default: true }); - - return content; + return content.default || content; } catch (error) { throw new ServerlessError( `Cannot parse "${path.basename(configurationPath)}": Initialization error: ${ diff --git a/package.json b/package.json index 919f6ad1a..3ca366852 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,6 @@ "graceful-fs": "^4.2.11", "https-proxy-agent": "^5.0.1", "is-docker": "^2.2.1", - "jiti": "^2.4.2", "js-yaml": "^4.1.0", "json-cycle": "^1.5.0", "json-refs": "^3.0.15", @@ -73,6 +72,7 @@ "strip-ansi": "^6.0.1", "supports-color": "^8.1.1", "timers-ext": "^0.1.7", + "tsx": "^4.20.3", "type": "^2.7.2", "untildify": "^4.0.0", "uuid": "^9.0.0",