[英]TypeError: react__WEBPACK_IMPORTED_MODULE_1___default is not a function or its return value is not iterable
[英](WebPack) TypeError: Object is not a function or its return value is not iterable
我有这个 function buildUpdateExpression
,我在以下Serverless
处理程序中使用它,并且 Webpack 返回一个TypeError
,如上所示,与所述 ZC1C425268E68385D1AB45074C17A94 直接相关...
TypeError: Object is not a function or its return value is not iterable
at .../update-user.js:7:80
at .../handler-lib.js:4:19
1 import handler from "./libs/handler-lib";
2 // import dynamoDb from "./libs/dynamodb-lib";
3 import buildUpdateExpression from "./libs/utility-lib";
4 export const main = handler(async (event, context) => {
5 const data = JSON.parse(event.body);
6 const validExpressionAttributes = ["bio", "location", "profile-picture-link", "website"];
7 const [updateExpression, expressionAttributeValues] = buildUpdateExpression(validExpressionAttributes, data);
return {
updateExpression: updateExpression,
expressionAttributeValues: expressionAttributeValues
};
// const params = {
// TableName: process.env.userTableName,
// Key: {
// "userId": event.requestContext.identity.cognitoIdentityId
// },
// ConditionExpression: "userId = :userIdVal",
// UpdateExpression: updateExpression,
// ExpressionAttributeValues: expressionAttributeValues,
// ReturnValues: "UPDATED_NEW"
// };
// await dynamoDb.update(params);
// return params.Item;
});
>> libs/utility-lib.js
export function buildUpdateExpression(validExpressionAttributes, data) {
const dataLength = Object.keys(data).length;
let updateExpression = "set ";
let expressionAttributeValues = {};
for(let i = 0; i < validExpressionAttributes.length; i += 1) {
let attribute = validExpressionAttributes[i];
if(attribute in data) {
let valueKey = ":" + attribute + "Val";
expressionAttributeValues[valueKey] = data[attribute];
updateExpression += attribute + " = " + valueKey;
if(i < validExpressionAttributes.length - 1 && i < dataLength - 1) {
updateExpression += ", ";
}
}
}
return [updateExpression, expressionAttributeValues];
};
当我进行npm test
import { buildUpdateExpression } from "../libs/utility-lib";
test("buildUpdateExpression (1)", () => {
// Input variables
const validExpressionAttributes = ["a", "b", "c"];
const data = {
a: 1,
b: 2,
c: 3
};
// Expected output variables
const expectedUpdateExpression = "set a = :aVal, b = :bVal, c = :cVal";
const expectedExpressionAttributeValues = {
":aVal": 1,
":bVal": 2,
":cVal": 3,
};
const [updateExpression, expressionAttributeValues] =
buildUpdateExpression(validExpressionAttributes, data);
expect(updateExpression).toEqual(expectedUpdateExpression);
expect(expressionAttributeValues).toEqual(expectedExpressionAttributeValues);
});
PASS tests/utility-lib.test.js
✓ buildUpdateExpression (1) (3ms)
✓ buildUpdateExpression (2)
✓ buildUpdateExpression (3) (1ms)
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
Snapshots: 0 total
Time: 1.597s
Ran all test suites.
这里可能是什么问题?
解决方法是import buildUpdateExpression from "./libs/utility-lib";
您必须import { buildUpdateExpression } from "./libs/utility-lib";
我的怀疑是前者导入了一个模块,而后者导入了 function ......这是我能想到的唯一解释,我可能错了......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.