I wrote a package and published it to npm. The package starts with
import * as aws from "@pulumi/aws";
import * as pulumi from "@pulumi/pulumi";
export interface ...
export class controlplaneDependencies extends pulumi.ComponentResource {
...
The publishing and installation works fine. When I try to run the code from a different index.ts
, it fails with the error
import * as aws from "@pulumi/aws";
^^^^^^
SyntaxError: Cannot use import statement outside a module
at compileFunction (<anonymous>)
at Object.compileFunction (node:vm:353:18)
at wrapSafe (node:internal/modules/cjs/loader:1039:15)
at Module._compile (node:internal/modules/cjs/loader:1073:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
at Object.require.extensions.<computed> [as .ts] (/Users/cinto/public-cloud-operator/tests/aws/node_modules/ts-node/src/index.ts:431:14)
at Module.load (node:internal/modules/cjs/loader:989:32)
at Function.Module._load (node:internal/modules/cjs/loader:829:14)
at Module.require (node:internal/modules/cjs/loader:1013:19)
at require (node:internal/modules/cjs/helpers:93:18)
This is how I am calling the package
import * as controlplane from "@bb/controlplane";
stackOutput=new controlplane.controlplaneDependencies("Install dependencies", {
Provider: awsProvider,
I am not sure how to fix this. I tried adding "type": "module",
but is still fails.
I also tried
const aws = require( "@hybrid-cloud/aws" )
but then aws
cannot be accessed inside the interface.
Any pointers are helpful. Here is the tsconfig.json
{
"compilerOptions": {
"strict": true,
"strictPropertyInitialization": false,
"target": "ES6",
"module": "CommonJS",
"moduleResolution": "Node",
"sourceMap": true,
"declaration": true,
"experimentalDecorators": true,
"pretty": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
"noImplicitAny": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"lib": [
"es2019",
"es5",
"es6",
"dom",
"es2015.collection"
],
"outDir": "./bin"
},
"exclude": [
"node_modules"
]
}
CodePudding user response:
I added this to package.json and it is working now
"scripts": {
"build": "tsc",
"build:typecheck": "tsc --noEmit",
"lint:check": "eslint src/**/*.ts",
"lint:fix": "eslint --fix src/**/*.ts"
},
"main": "bin/src/index.js"
I also just kept es6
in my lib. Thanks everyone for the help