почему этот код показывает, что не удается найти ошибку модуля?

#javascript #node.js

#javascript #node.js

Вопрос:

внутри localbase.js …

 const fs = require("fs");

if(!fs.existsSync(__dirname   "/localbase.json")) 
  fs.writeFileSync("./localbase.json", "{}");

let database = require("./localbase.json");
 

Приведенный выше код показывает эту ошибку Error: Cannot find module './localbase.json' .

Файл импортируется server.js следующим образом.

 const lb = require('./db/localbase.js');
 

моя структура каталогов (извиняюсь, если мое дерево выглядит плохо)…

 |- db
 --- localbase.js
|- node_modules
|- public
server.js
package.json
 

Но если я помещу localbase.js где находится server.js значит, все в полном порядке.

Ответ №1:

итак, исправление действительно простое…

 const fs = require("fs");

if(!fs.existsSync(__dirname   "/localbase.json")) 
  fs.writeFileSync(__dirname   "/localbase.json", "{}");

let database = require(__dirname   "/localbase.json");
 

Итак, в основном, что я сделал, я импортировал относительный корневой каталог (где находится node_modules ), который вызывал эту ошибку.

Я думал, что using require('./localbase.json') выберет каталог относительно server.js , но это не так.

Итак, я узнал, что require() использует пути относительно корневого каталога.

Это означает, что я должен использовать __dirname для импорта модулей внутри подкаталогов.