Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在Windows上使用LF而不是CRLF编写文件?_Node.js - Fatal编程技术网

Node.js 如何在Windows上使用LF而不是CRLF编写文件?

Node.js 如何在Windows上使用LF而不是CRLF编写文件?,node.js,Node.js,我们有一个作为预安装脚本运行的脚本。它使用fs.writeFile编写生成的配置文件 writeFile(configFilePath, configFileContents, (e) => { // ... do some error handling } 出于某种原因,它在Windows上使用CRLF行结尾,并在git中创建差异,尽管文件没有更改 我试着做一些有用的事情 .replace(/\r\n/gm, "\n"); 在configFileConte

我们有一个作为预安装脚本运行的脚本。它使用fs.writeFile编写生成的配置文件

writeFile(configFilePath, configFileContents, (e) => {
    // ... do some error handling
}
出于某种原因,它在Windows上使用CRLF行结尾,并在git中创建差异,尽管文件没有更改

我试着做一些有用的事情

.replace(/\r\n/gm, "\n");
configFileContents
上,但仍使用Windows行结尾

configFileContents
由以下人员创建:

const configFileContents = JSON.stringify({
  foo: bar,
  baz, foo,
  // ...
}, null, 2);

有没有办法告诉Node使用Linux操作系统?

您只需执行以下操作:

。替换(/\r\n/g,“\n”)

另外,
/\r\n/gm
regexp不正确,因为您已经告诉regexp引擎通过提供
m
/多行选项来查找新行。。。这就是为什么它不允许表达式工作。只要使用
g
就行了,如果你真的不想使用RegExp

我试了一下你的代码,得到了
LF
行尾,这很奇怪。我们只需创建一个对象,用上面的代码将其字符串化,然后使用Windows行结尾保存它,
true
false
?为什么你说
它在Windows上使用CRLF行结尾
我犯了一个错误,我的错。似乎有人用Windows行结尾推送了一些东西,脚本用Linux行结尾生成了它。我看错了差别,以为是我的机器干的。请你说清楚一点好吗。。我不明白你想说的话。
'\r\n abc\r\n.replace(/\r\n/gm,“\n”)。includes('\r')
false
'\r\n abc\r\n.replace(“\r\n”,“\n”)。includes('\r')
真的
。您的答案是无法删除所有
\r
嗯,有一个选项我不太清楚..正在使用
require('os')。EOL
。我认为这不应该有帮助,但值得一试。。。如果该文件由使用CRLF换行符而不是LF的任何编辑器编辑,则通常会发生此行为。如果您使用的是VSCode,则可以从底部工具栏中进行更改。这将允许在LF模式下编辑文件。我犯了一个错误,我的坏。似乎有人用Windows行结尾推送了一些东西,脚本用Linux行结尾生成了它。我看错了差异,并认为是我的机器做的。错误发生了,不用担心