Shane Jix

env node r No such file or directory

create:January 06, 2022  update:April 12, 2022  ☕️ 2 min read

同步链接: https://www.shanejix.com/posts/env node r No such file or directory/

执行 npm scripts命令突然报错如下:

xx@ling:/usr/github_reps/block-ui# yarn run build:esm
yarn run v1.22.10
$ block-scripts build:component:esm
/usr/bin/env: ‘node\r’: No such file or directory
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

有效信息在第四行 /usr/bin/env: ‘node\r’: No such file or directory 没错~ 后面为啥多了个 \r 回想起当前项目跨平台在开发。Linux 和 Window 都在陆续 pull && push 代码,\r 字符很容易联想到 [End Of Line Sequence]

随即用 VScode 查看了下,项目文件 image.png node_modules 下执行代码文件 image.png 在 linux 环境下统一为 LF 后 scripts 命令成功运行!

CRLF and LF

CRLF / LF 分别是 Window 和 Unix 系统采用的 End Of Line(EOF) 换行符

CR = Carriage Return (\r, 0x0D in hexadecimal, 13 in decimal)

- moves the cursor to the beginning of the line without advancing to the next line.
LF = Line Feed (\n, 0x0A in hexadecimal, 10 in decimal)

- moves the cursor down to the next line without returning to the beginning of the line.

在打印机时代,使用 CR 把打印机指针移动到行首,LF 把指针往下移动一行。 Unix like 系统为了节省空间等原因里大多采用 LF(\n) 换行,而 Windows 中则延续了打字机时代使用 CRLF 换行。

fix: Prettier

First available in v1.15.0, default value changed from auto to lf in v2.0.0

Prettier v2+ EOL 的默认配置就是 LF 可以完美解决此问题

references

作者:shanejix 出处:https://www.shanejix.com/posts/env node r No such file or directory/ 版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。 声明:转载请注明出处!

Edit on GitHubDiscuss on GitHub


Shane Jix

Personal blog by Shane Jix. I explain with words and code.

LinksTools
© 2019 - 2022, Built withGatsby