copyFileSync работает локально, но не может найти src в глобальном

#javascript #node.js #fs

#javascript #node.js #fs

Вопрос:

Я работаю над организационным пакетом в npm, похожим на create-react-app в том смысле, что при запуске npx create-react-app myProject будут сгенерированы все необходимые файлы.

Вот код, который работает в половине случаев.

 const fs = require('fs-extra');
const CWD = process.cwd();

fs.copyFileSync(`${CWD}/src/myFile.js`, './newDest.js', (err) => {
  if (err) throw err;
});
  

Когда я тестирую эту функцию локально, она работает. например node src/index.js myProject

Когда я тестирую его при глобальной установке, например, npx /path/to/project myProject я получаю сообщение об ошибке ENOENT, потому что он не может найти мой файл, поскольку он еще не существует.

Есть ли лучший способ сделать это с помощью JavaScript или я чего-то здесь не хватает?

Ответ №1:

Похоже, что рабочий каталог настроен неправильно. Вы должны заменить process.cwd() на process.chdir(__dirname) . Попробуйте распечатать и проверьте, правильно ли отображается CWD или нет.

Комментарии:

1. Да, мне пришлось добавить process.chdir(__dirname) в начало файла, и все работает. Спасибо!