eta-dev / eta

Embedded JS template engine for Node, Deno, and the browser. Lighweight, fast, and pluggable. Written in TypeScript
https://eta.js.org
MIT License
1.35k stars 60 forks source link

Serverless Bundle linting errors with 3.x #261

Open bbbco opened 9 months ago

bbbco commented 9 months ago

Describe the bug Serverless Bundle is now throwing linting errors (presumably via eslint) for the new 3.x syntax:

ERROR in src/functions/foo/handler.ts:33:25
TS2554: Expected 0 arguments, but got 1.
    31 |  */
    32 | export async function foo(): Promise<Foo[]> {
  > 33 |     const eta = new Eta({
       |                         ^
  > 34 |         views: path.join(__dirname, '../../templates'),
       | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  > 35 |     });

ERROR in src/functions/foo/handler.ts:36:26
TS2339: Property 'render' does not exist on type 'Eta'.
    34 |         views: path.join(__dirname, '../../templates'),
    35 |     });
  > 36 |     const fooQuery = eta.render('foo.eta', { foo: process.env.FOO });
       |                          ^^^^^^
       |

It seems that the linter is expecting the Eta object to be called the way it was in 2.x

Package & Environment Details

nebrelbug commented 9 months ago

Weird. What version do you have installed? Make sure that you don't have @types/eta installed.

bbbco commented 9 months ago
        "eta": "^3.1.1",

I don't have @types/eta installed. My VSCode intelisense detects the new format just fine and thinks its valid code. It's only after I run npx serverless webpack that the compilation errors appear.

bbbco commented 9 months ago

Here's my package dependencies:

    "dependencies": {
        "@aws-sdk/client-s3": "^3.425.0",
        "@aws-sdk/client-secrets-manager": "^3.347.1",
        "@middy/core": "^3.4.0",
        "@middy/http-json-body-parser": "^3.4.0",
        "eta": "^3.1.1",
        "fast-xml-parser": "^4.3.0",
        "proxy-agent": "^6.3.0",
        "semver": "^7.5.4",
        "snowflake-sdk": "^1.8.0"
    },
    "devDependencies": {
        "@serverless/typescript": "^3.0.0",
        "@smithy/util-stream": "^2.0.14",
        "@types/aws-lambda": "^8.10.71",
        "@types/jest": "^29.5.0",
        "@types/node": "^14.14.25",
        "@types/snowflake-sdk": "^1.6.12",
        "@typescript-eslint/eslint-plugin": "^6.7",
        "@typescript-eslint/parser": "^6.7",
        "aws-sdk-client-mock": "^3.0.0",
        "eslint": "^8.51.0",
        "eslint-config-prettier": "^8.8.0",
        "eslint-plugin-jest": "^27.2.1",
        "eslint-plugin-prettier": "^4.2.1",
        "eslint-plugin-unused-imports": "^2.0.0",
        "husky": "^8.0.3",
        "jest": "^29.5.0",
        "json-schema-to-ts": "^1.5.0",
        "prettier": "^2.8.7",
        "serverless": "^3.0.0",
        "serverless-bundle": "^6.0.0",
        "serverless-offline": "^12.0.4",
        "serverless-plugin-aws-alerts": "^1.7.5",
        "snyk": "^1.1154.0",
        "ts-jest": "^29.1.0",
        "ts-node": "^10.4.0",
        "tsconfig-paths": "^3.9.0",
        "typescript": "^4.3.5"
    }
}
nebrelbug commented 9 months ago

@bbbco I don't think this is an issue with Eta -- I'd recommend opening an issue in serverless.

tternes commented 8 months ago

I was running into this same issue and eventually tracked it down to ts-node using typescript 4.x.x. When I moved my project to typescript 5.x, things worked as documented.

Since your package file includes typescript 4.3.5, it's possible that's what you're running in to here. Since I see ts-node in your package file too, you can check to see what it's using with the -vv flag:

$ npx ts-node -vv          
ts-node v10.9.1
node v18.18.2
compiler v5.2.2

This might be worth noting in the docs, @nebrelbug. It was an easy fix once I understood the issue, but it took a while to track down.