"语法错误:无效或意外的令牌"使用node.js运行脚本

时间:2018-03-17 09:52:53

标签: javascript node.js unicode byte-order-mark

当我尝试使用节点js运行我的echo.js文件时,我从终端(powershell)收到以下错误消息

PS C:\Users\ASUS\Dropbox\Web Development\Backend\Intro To Node> node echo.js
C:\Users\ASUS\Dropbox\Web Development\Backend\Intro To Node\echo.js:1
(function (exports, require, module, __filename, __dirname) { ��
                                                              ^

SyntaxError: Invalid or unexpected token
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3

2 个答案:

答案 0 :(得分:4)

您的echo.js文件很可能是UTF-16LE编码的,这是node不支持的编码。 (��是BOM(Unicode字节顺序标记)字符,node错误解释为数据)。

要解决此问题,使用 UTF-8 编码保存echo.js。 虽然您可以选择带有 BOM的UTF-8 ,但这不是必要的,也是最好的避免。

答案 1 :(得分:0)

在Mac中,使用TextEdit。转到“格式”,然后选择“制作纯文本”。然后在保存文件时,选择纯文本编码作为“自定义编码列表”,然后选择Unicode(UTF-8),然后取消选择其他所有内容。

此外,复制粘贴代码时也会出现此错误。在这种情况下,请确保替换单个的逗号,因为复制粘贴代码时格式不同。更换应该可以使错误消失。