Import Products populate script: Improve error message
See original GitHub issueDescribe the bug
While importing the products, it imports 0 products and logs this error in vendure-import-error.log
Cannot read properties of undefined (reading 'id')
A thing I observed is it uploads facets from the first row of CSV and then it throws error
To Reproduce Steps to reproduce the behavior:
-
Delete the DB my-migration-4.zip
-
Create vendure.sqlite file
-
Run the migration script which prepares a blank vendure database
-
Run the populate scripts and upload the csv
Expected behavior
info 12/8/22, 8:35 PM - [Populate] Populated initial data
info 12/8/22, 8:35 PM - [Populate] Imported 50 products info 12/8/22, 8:35 PM - [Populate] Done!
Environment (please complete the following information):
- @vendure/core version:1.7.4
- Nodejs version:16.17.0
- Database (mysql/postgres etc): sqlite
Additional context Before deleting the database, I tried uploading products to an existing database which consisted of products and it successfully imported all the products
an example set of my csv:
"Organza print with sequins & thread work
Colour : Placid blue","organza-print-with-sequins-thread-work
-colour-placid-blue",,,color:blue|weave:organza|print:digital prints|work:sequins work|work:sequence work|tag:sabyasachi|tag:sabhyasachi,,,DPE12M-001-601,520,,,18,,,44,38,520
"Organza print with sequins & thread work
Colour : Peach pie","organza-print-with-sequins-thread-work
-colour-peach-pie",,,color:peach|weave:organza|print:digital prints|work:sequins work|work:sequence work|tag:sabyasachi|tag:sabhyasachi,,,DPE12M-002-602,520,,,18,,,44,38,520
"Organza print with sequins & thread work
Colour : Parrot green with royal blue","organza-print-with-sequins-thread-work
-colour-parrot-green-with-royal-blue",,,color:green|color:blue|weave:organza|print:digital prints|work:sequins work|work:sequence work|tag:sabyasachi|tag:sabhyasachi,,,DPE12M-003-603,520,,,18,,,44,38,520```
populate.ts
```import { bootstrap, DefaultJobQueuePlugin } from "@vendure/core";
import { populate } from "@vendure/core/cli";
import { config } from "../src/vendure-config";
import { initialData } from "./initial-data";
const path = require("path");
const productsCsvFile = path.join(__dirname, "./products-without-assets.csv");
const populateConfig = {
...config,
plugins: (config.plugins || []).filter(
// Remove your JobQueuePlugin during populating to avoid
// generating lots of unnecessary jobs as the Collections get created.
(plugin) => plugin !== DefaultJobQueuePlugin
),
};
populate(() => bootstrap(config), initialData, productsCsvFile)
.then((app) => {
return app.close();
})
.then(
() => process.exit(0),
(err) => {
console.log(err);
process.exit(1);
}
)
.catch((e) => console.log(e));
initial-data.ts
import { InitialData, LanguageCode, Permission } from "@vendure/core";
export const initialData: InitialData = {
paymentMethods: [],
roles: [],
defaultLanguage: LanguageCode.en,
countries: [{ name: "India", code: "IN", zone: "Asia" }],
defaultZone: "Asia",
taxRates: [],
shippingMethods: [],
collections: [],
};
Issue Analytics
- State:
- Created 9 months ago
- Comments:5 (2 by maintainers)
Top GitHub Comments
OK thanks. I’m going to re-open this because I think we need to provide a better error message which exactly states why the error is occurring.
@michaelbromley I dont think there was any stack trace it was just
info 12/6/22, 9:49 PM - [Populate] Populated initial data info 12/6/22, 9:49 PM - [Populate] Imported 0 products error 12/6/2, 9:49 PM - [Populate] An error occured which was logged in vendure-import.log info 12/6/22, 9:49 PM - [Populate] Done!