【发布时间】:2022-01-17 00:05:25
【问题描述】:
我正在尝试创建一个在 nodejs 上运行的 AWS Lambda 函数。它只是调用一个 REST API,并且应该返回 API 调用返回的任何内容。我正在尝试使用 node-fetch 模块。一开始我用这个:
const fetch = require('node-fetch');
导致以下错误:必须使用导入来加载 ES 模块
所以我把它改成这样使用导入:
import fetch from 'node-fetch';
这又导致了以下错误:SyntaxError: Cannot use import statement outside a module
接下来我在主文件树的 package.json 中添加了“type”:“module”。
{
"dependencies": {
"node-fetch": "^3.1.0"
},
"name": "aws_lambda",
"version": "1.0.0",
"type": "module",
"main": "index.js"
}
所以现在我收到这样的错误:“errorMessage”:“exports 未在 ES 模块范围内定义\n此文件被视为 ES 模块,因为它具有 '.js' 文件扩展名和 '/var/ task/package.json' 包含 "type": "module"。要将其视为 CommonJS 脚本,请将其重命名为使用 '.cjs' 文件扩展名。",
将文件扩展名更改为 .cjs 让我回到“不能在模块外使用 import 语句”
这怎么这么难?我应该做些什么?谢谢
【问题讨论】:
-
是的!将 import 语句替换为 'const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));'解决了它,虽然我完全不知道为什么。谢谢!准备把我的头撞到下一堵墙上:)
标签: node.js aws-lambda