nodejs не может найти свой собственный модуль для родительского пути - PullRequest
0 голосов
/ 22 октября 2018

У меня есть дерево, подобное этому.

folder1
    file1.js
folder2
    file2.js
index.js

Мне требуется, чтобы мой file1 находился внутри файла index.js

из файла 1, я хочу запросить file2

, если яdo const file2= require('../folder2/file2.js');, это работает

, если я делаю это динамически, так что

const myFiles = fs.readdirSync('../folder2').filter(file => file.endsWith('.js'));
for (const file of myFiles ) 
{
    const myFile = require(`../folder2/${file}`);
} 

Я получил это

 return binding.readdir(pathModule._makeLong(path), options.encoding);
                 ^

Error: ENOENT: no such file or directory, scandir 'displaying a wrong path here'

Если в моем readdir я делаю простой ./

Я все еще получил

Cannot find module './folder2/file2.js'

Я действительно не понимаю этого

1 Ответ

0 голосов
/ 22 октября 2018

fs не знает о текущем пути к модулю и использует текущий рабочий каталог (process.cwd()) для относительных путей.

Для действий, которые относятся к текущему пути к модулю, следует использовать __dirname:

fs.readdirSync(path.join(__dirname, '../folder2'))
...