app.js Node 应用 在 Linux 上运行良好。但是,PowerShell 会产生以下错误消息: ~\apps\test\app.j-6ren">
gpt4 book ai didi

node.js - 在 PowerShell 中,使用 echo 命令编写的文件不适用于 NodeJS

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:02 27 4
gpt4 key购买 nike

echo "console.log('测试成功!')"> app.js

Node 应用

在 Linux 上运行良好。但是,PowerShell 会产生以下错误消息:

~\apps\test\app.js:1
(function (exports, require, module, __filename, __dirname) { ��c
^
SyntaxError: Invalid or unexpected token
at Object.exports.runInThisContext (vm.js:76:16)
at Module._compile (module.js:528:28)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.runMain (module.js:590:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3

另一方面,如果我要 echo > app.js,然后从文本编辑器输入 console.log('Test success!')node app 在任何地方都运行良好。

怎么会?

我最好的猜测:在 PowerShell 中,echo 似乎使字符串成为十六进制而不是 UTF-8。

最佳答案

PowerShell 的 > 运算符总是生成 UTF-16LE 编码的文件,这是 node 无法处理的。

要创建 UTF-8 编码的文件,请使用 Out-FileSet-Content-Encoding Utf8:

"console.log('Test success!')" | Set-Content -Encoding Utf8 app.js

请注意,PowerShell 总是在前面加上 pseudo-BOM (前 3 个字节是十六进制。字节值 EF BB BF)创建 UTF-8 文件时,仅在 Windows 世界中使用,但 node 似乎能够在 Windows 和类 Unix 平台上处理。

关于node.js - 在 PowerShell 中,使用 echo 命令编写的文件不适用于 NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41722885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com