diff --git a/packages/@n8n_io/eslint-config/local-rules.js b/packages/@n8n_io/eslint-config/local-rules.js index 16e405a602d06..0d3ff867b3cff 100644 --- a/packages/@n8n_io/eslint-config/local-rules.js +++ b/packages/@n8n_io/eslint-config/local-rules.js @@ -396,6 +396,32 @@ module.exports = { }; }, }, + + 'no-dynamic-import-template': { + meta: { + type: 'error', + docs: { + description: + 'Disallow non-relative imports in template string argument to `await import()`, because `tsc-alias` as of 1.8.7 is unable to resolve aliased paths in this scenario.', + recommended: true, + }, + }, + create: function (context) { + return { + 'AwaitExpression > ImportExpression TemplateLiteral'(node) { + const templateValue = node.quasis[0].value.cooked; + + if (!templateValue?.startsWith('@/')) return; + + context.report({ + node, + message: + 'Use relative imports in template string argument to `await import()`, because `tsc-alias` as of 1.8.7 is unable to resolve aliased paths in this scenario.', + }); + }, + }; + }, + }, }; const isJsonParseCall = (node) => diff --git a/packages/cli/.eslintrc.js b/packages/cli/.eslintrc.js index 75676e3a4bc95..1840061479716 100644 --- a/packages/cli/.eslintrc.js +++ b/packages/cli/.eslintrc.js @@ -19,6 +19,8 @@ module.exports = { ], rules: { + 'n8n-local-rules/no-dynamic-import-template': 'error', + // TODO: Remove this 'import/no-cycle': 'warn', 'import/order': 'off',