Авторский канал @Akiyamka
Поддержать автора можно здесь:
buymeacoffee.com/cherrytea
Post #140
1.16K
Есть одна мелочь, о которой если не подумать при написании скрипта, то можно сломать пол системы неопытному пользователю.
Если вы писали на node.js консольные утилиты, то там с 99% вероятностью был параметр принимающий путь к файлу (по крайней мере у меня было так).
И рано или поздно туда прилетит что-то вроде
В худшем случае (если вы создаете директорию если она не найдена) будет создана папка с названием
Что же поменялось?
Дело в том что
А когда вы читаете файл, или stdout - этого не происходит, и в приложение путь попадает как есть. Но далеко не все пользователи это осознают.
По этой причине, было бы здорово в вашей апке учесть этот момент, и при чтении пути интерпретировать символ
В npm полно либ которые это делают, но это легко сделать без них
(P.S. вот поэтому нельзя запускать скрипты рукожопам вроде меня с правами админа!)
Если вы писали на node.js консольные утилиты, то там с 99% вероятностью был параметр принимающий путь к файлу (по крайней мере у меня было так).
И рано или поздно туда прилетит что-то вроде
--path ~/logs/debug.txt - и ничего страшного не произойдет. А потом это перенесут в конфиг - и вот тут начнется дичь.В худшем случае (если вы создаете директорию если она не найдена) будет создана папка с названием
~ прямо в корне, что не только взорвет дно вашего пользователя пока он будет пытаться найти этот файл, но и может плохо сказаться на системе в целом, ведь теперь в системе путь ~/... может вести в совершенно разные места. Что же поменялось?
Дело в том что
`~` это алиас который понимает ваш шэл (bash например). Когда вы задаете параметр ~/logs/debug.txt оно преобразуется в /home/username/logs/debug.txt перед тем как будет передано программе.А когда вы читаете файл, или stdout - этого не происходит, и в приложение путь попадает как есть. Но далеко не все пользователи это осознают.
По этой причине, было бы здорово в вашей апке учесть этот момент, и при чтении пути интерпретировать символ
~ в начале пути.В npm полно либ которые это делают, но это легко сделать без них
import os from "node:os"
const resolveHomeDir = (path) => (path === '~' || path.startsWith('~/')) ? path.replace('~', os.homedir()) : path
(P.S. вот поэтому нельзя запускать скрипты рукожопам вроде меня с правами админа!)
- 👍 7
- 🔥 2


