Search code examples
javascriptnode.jstypescriptfirebaselerna

SyntaxError: Cannot use import statement outside a module with shared package


I am currently working on building a shared node package between my NextJS app & Firebase Functions backend. Here is the current directory structure:

├── backend/
│   └── functions/
├── product/
└── shared/

Here is my index.ts that I export from my shared package:

import { SUPPORTED_WEBSITES } from "./websites/supportedWebsites";
import { getSupportedWebsite, addAffilateLink } from "./websites/utils";

export default { SUPPORTED_WEBSITES, getSupportedWebsite, addAffilateLink };

I then reference in firebase/functions:

import shared from "shared"

export const exampleFunc = functions.https.onCall(
   async (data, context) => {
      shared.getSupportedWebsite("amazon.com")
   }
)

I then run firebase emulators:start to try to test out exampleFunc and I get:

import { SUPPORTED_WEBSITES } from "./websites/supportedWebsites";
^^^^^^

SyntaxError: Cannot use import statement outside a module

I am currently symlinking shared to backend/functions via Lerna.

Please let me know if you have any ideas/need more clarification.


Solution

  • Update

    I was able to fix this by compiling my shared/src files into commonjs files via tsc