Skip to content

dot in module path breaks execution #1860

@eblfo

Description

@eblfo

Bug Report

using latest serverless-offline (14.4.0)
using serverless 3.40.0

Current Behavior

using pnpm install to manage node_modules
with virtualStoreDir=node_modules/pnpmstore

running pnpm deploy to create the artifact defined in serverless.yml for the lambdas

deploy folder shows node_modules/.pnpm as virtual store directory due to hardcoding (see here)

serverless offline --httpPort 5000 --stage localhost --config ./serverless.yml --noPrependStageInUrl --localEnvironment

errors with:

Server ready: http://localhost:5000 🚀


ANY /pipeline/healthcheck (λ: pipeline-api)
× Unhandled exception in handler 'pipeline-api'.
× Runtime.UserCodeSyntaxError: SyntaxError: Unexpected token '.'
      at _loadUserApp (/home/lfo/lfo/portal/node_modules/pnpmstore/[email protected][email protected][email protected]_/node_modules/serverless-offline/src/lambda/handler-runner/in-process-runner/aws-lambda-ric/UserFunction.js:239:13)
      at async module.exports.load (/home/lfo/lfo/portal/node_modules/pnpmstore/[email protected][email protected][email protected]_/node_modules/serverless-offline/src/lambda/handler-runner/in-process-runner/aws-lambda-ric/UserFunction.js:311:19)
      at async InProcessRunner.run (file:///home/lfo/lfo/portal/node_modules/pnpmstore/[email protected][email protected][email protected]_/node_modules/serverless-offline/src/lambda/handler-runner/in-process-runner/InProcessRunner.js:41:21)
      at async MessagePort.<anonymous> (file:///home/lfo/lfo/portal/node_modules/pnpmstore/[email protected][email protected][email protected]_/node_modules/serverless-offline/src/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js:24:14)
× SyntaxError: Unexpected token '.'

Sample Code

  • file: serverless.yml
service: ${self:custom.service}

frameworkVersion: '3.40.0'
variablesResolutionMode: 20210326
configValidationMode: error

# the following comment will be substituted during AWS deployment to:
# # package:
# #  artifact: ./lambda-api.zip
package:
  artifact: ./lambda-api.zip



layers:
  noOp:
    name: ${self:custom.service}-${self:custom.stage}-noOp
    compatibleRuntimes:
      - ${self:custom.awsLambdaRuntime}
    path: .tmp
  nodeModules:
    name: ${self:custom.service}-${self:custom.stage}-nodeModules
    compatibleRuntimes:
      - ${self:custom.awsLambdaRuntime}
    package:
      artifact: ./lambda-api-node-modules.zip

Expected behavior/code

dont error but handle the handler

Environment

  • serverless version: see top
  • serverless-offline see top
  • node.js version: 20.19.0
  • OS: node 20.19.0 docker image

Possible Solution

???

Additional context/Screenshots

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions