[英]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.