User_T
User_T

Reputation: 19

How to seed database with mongoose (MongoDB) and nextjs

Could you please assist me with seeding the database in nextjs?

This is the main code of seeder.js

import Product from '/models/productModel';
import products from '/data/products';
import dbConnect from '/config/dbConnect';

dbConnect();

const seedProducts = async () => {
  try {
    await Product.deleteMany();
    console.log('Products are deleted');

    await Product.insertMany(products);
    console.log('All Products are added.');

    process.exit();
  } catch (error) {
    console.log(error.message);
    process.exit();
  }
};

seedProducts();

and this is the scripts in package

package.json

"scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "seeder": "node utils/seeder"
  },

when I run node seeder, I get the below error message

(node:27824) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
C:\Users\tarek\Desktop\Code\utils\seeder.js:1
import Product from '/models/productModel';
^^^^^^

SyntaxError: Cannot use import statement outside a module

So, I renamed the file extension into mjs then, the following error message

node:internal/modules/cjs/loader:959
  throw err;
  ^

Error: Cannot find module 'C:\Users\tarek\Desktop\Code\utils\seeder'
    at Module._resolveFilename (node:internal/modules/cjs/loader:956:15)
    at Module._load (node:internal/modules/cjs/loader:804:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

added the extension to the filename at package json script

"seeder": "node utils/seeder.mjs"

Still got error message:

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\models\productModel' imported from C:\Users\tarek\Desktop\Code\utils\seeder.mjs at new NodeError (node:internal/errors:387:5) at finalizeResolution (node:internal/modules/esm/resolve:404:11) at moduleResolve (node:internal/modules/esm/resolve:965:10) at defaultResolve (node:internal/modules/esm/resolve:1173:11) at nextResolve (node:internal/modules/esm/loader:173:28) at ESMLoader.resolve (node:internal/modules/esm/loader:852:30) at ESMLoader.getModuleJob (node:internal/modules/esm/loader:439:18) at ModuleWrap. (node:internal/modules/esm/module_job:76:40) at link (node:internal/modules/esm/module_job:75:36) { code: 'ERR_MODULE_NOT_FOUND' }

Upvotes: 1

Views: 1189

Answers (1)

Jean Leao
Jean Leao

Reputation: 1

npx tsx your-script.mjs

I hope this solves your problem. Don't ask me why.

Upvotes: 0

Related Questions