#javascript #node.js #typescript #aws-cdk
#javascript #node.js #typescript #aws-cdk
Вопрос:
У меня есть пользовательский модуль, который я написал и загрузил в NPM, который экспортирует класс
В проекте AWS-CDK я устанавливаю эту зависимость и пытаюсь ее импортировать, но при сборке «cdk synth» я получаю следующую ошибку
Cannot use import statement outside a module
Вот package JSON из модуля NPM
"name": "@organization/cdk-organization-fe",
"version": "1.0.2",
"description": "Frontend construct for apps",
"main": "stack.ts",
"publishConfig": {
"access": "restricted"
},
"type":"module",
"scripts": {
"test": "echo "Error: no test specified" amp;amp; exit 1",
"tsc": "tsc"
},
"author": "me,
"license": "ISC",
"dependencies": {
"@aws-cdk/aws-cloudfront": "^1.73.0",
"@aws-cdk/aws-s3": "^1.73.0",
"@aws-cdk/aws-s3-deployment": "^1.73.0",
"@aws-cdk/aws-certificatemanager": "^1.73.0",
"@aws-cdk/aws-logs": "^1.73.0",
"@aws-cdk/aws-lambda": "^1.73.0",
"@aws-cdk/aws-iam": "^1.73.0",
"aws-cdk": "^1.73.0",
"path": "^0.12.7",
"typescript": "^4.0.5"
}
}
а затем проект CDK с использованием библиотеки:
"name": "showtix_fe",
"version": "0.1.0",
"bin": {
"showtix_fe": "bin/showtix_fe.js"
},
"type": "module",
"scripts": {
"build": "tsc",
"watch": "tsc -w",
"test": "jest",
"cdk": "cdk"
},
"devDependencies": {
"@aws-cdk/assert": "1.73.0",
"@types/jest": "^24.0.22",
"@types/node": "10.17.5",
"jest": "^24.9.0",
"ts-jest": "^24.1.0",
"aws-cdk": "^1.73.0",
"ts-node": "^8.1.0",
"typescript": "~3.7.2"
},
"dependencies": {
"@aws-cdk/core": "^1.73.0",
"@organization/cdk-organization-fe": "^1.0.2",
"source-map-support": "^0.5.16"
}
}
пытались добавить type:module в пакет JSON
также пытались добавить это в библиотеку NPM для tsconfig
"target": "ES2017",
"module": "ESNEXT",
Ответ №1:
Я полагаю, вы хотите, чтобы ваш «main»: в модуле указывал на «stack.js » не файл «.ts». Затем вам нужно обязательно запустить ‘tsc’ перед использованием модуля. Также добавьте «типы»: «stack.d.ts».
Комментарии:
1. Получил работу с этим в TSconfig «CompilerOptions»: { «target»: «ES2018», «module»: «commonjs», также да, пришлось обновить stack.ts до js спасибо!