作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
app.js Node 应用 在 Linux 上运行良好。但是,PowerShell 会产生以下错误消息: ~\apps\test\app.j-6ren">
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-File
或 Set-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/
我是一名优秀的程序员,十分优秀!