我尝试在vscode中本地创建一个Nodejs Lambda项目,我将使用CDK部署它。
cdk init app --language javascript
字符串
在我的开发过程中,我想要使用EC 6模块,所以我需要在package.json中添加“type”:“module”
如果我现在运行cdk synth,我开始得到这些错误:
file:/E:/Code/Github/VBG/dnclimporter/bin/dnclimporter. js:3 const cdk = require('aws-cdk-lib'); ^
参考错误:require未在ES模块作用域中定义,您可以使用import代替此文件被视为ES模块,因为它具有“.js”文件扩展名,并且“E:\Code\Github\VBG\dnclistimporter\package. json”包含“type”:“module”。要将其视为CommonJS脚本,请将其重命名为使用“.cjs”文件扩展名。
很公平,所以我把我的requires改为imports,所以在我的importer.js文件中,
const cdk = require('aws-cdk-lib'); const {DnclimporterStack} = require('../lib/dnclimporter-stack');
const app = new cdk.App(); new DnclistimporterStack(app,'DnclistimporterStack',{});
成为这个
“./lib/dnclimporter-stack "; const app = new cdk.App(); new DnclimporterStack(app,'DnclimporterStack',{});”./lib/dnclimporter-stack“;
现在我得到了以下错误消息
错误[ERR_MONTH_NOT_FOUND]:找不到从E:\Code\Github\VBG\dnclistimporter\bin\dnclistimporter. js导入的模块“E:\Code\Github\VBG\lib\dnclistimporter-堆栈”
这是相同的代码,只是使用import not require导入,但它找不到模块。我将.js重命名为.mjs,现在它给出了
语法错误:请求的模块“../lib/dnclistimporter-stack.mjs”未提供名为“DncListImporterStack”的导出
这是相同的代码,只是将文件重命名为.mjs:
const { Stack,Duration } = require('aws-cdk-lib'); class DnclimporterStack extends Stack {
constructor(scope,id,props){ super(scope,id,props); } }
模块.exports = { DnclistimporterStack }
我将require改为import:
import { Stack } from 'aws-cdk-lib'
class DnclistimporterStack extends Stack {
constructor(scope, id, props) {
super(scope, id, props);
}
}
module.exports = { DnclistimporterStack }
型
但是得到了同样的错误。我做错了什么,有没有更好的方法来设置AWS Lambda项目(除了需要Docker的AWS SAM应用程序,我不能安装它,因为我正在使用VM)
1条答案
按热度按时间4dbbbstv1#
你打错了。也许这就是你的问题。
您正在导出“DnclistimporterStack”,但正在导入“DncListImporterStack”