所以今天节点不会运行我的应用,因为它在第219行发现了意外的令牌。 这是完整的错误日志:
syberic@syberic:~/Web/lotalot$ node app.js
/home/syberic/Web/lotalot/config/passport.js:219
});
^
SyntaxError: Unexpected token )
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:387:25)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at Object.<anonymous> (/home/syberic/Web/lotalot/app.js:22:1)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:141:18)
at node.js:933:3
但问题是,文件passport.js
有 217 行!
以下是该文件结尾在VIM中的截图:
我用其他一些文本编辑器,鼠标垫,gedit等检查了文件。但文件总是有217行。当我在文件的末尾添加一些空行时,意外的令牌分别向下移动。这是什么样的 MAGIC ?怎么会发生这种情况?我非常沮丧。
答案 0 :(得分:4)
我认为这意味着你的程序中有一个额外的开口支撑。在内部,Node将程序的文本粘贴到函数中,因此在文件内容之前有一些额外的字符,在它之后有一个额外的行。我可以使用这个只有一个开放括号的单行文件轻松地重现这个:
$ cat foo.js
{
$ node foo.js
/Users/dap/foo.js:3
});
^
SyntaxError: Unexpected token )
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
我建议使用像javascriptlint这样的工具来找到额外的开放式支撑。