Node.js - 未定义:0语法错误:意外的输入结束

时间:2015-03-12 00:53:14

标签: javascript jquery json node.js backbone.js

刚刚用Node.js和Backbone.js弄湿了脚。我正在使用这本书" Backbone Blueprints"他提供的用于设置网络服务器的一些代码似乎不起作用。

我安装并运行了Node.js(我知道这有效)。他的package.json代码似乎可以解决问题,但我会在下面发布它以防万一:

{
  "name": "simple-blog",
  "description": "This is a simple blog.",
  "version": "0.1.0",
  "scripts": {
    "start": "nodemon server.js"
  },
  "dependencies": {
    "express": "3.x.x",
    "ejs": "~0.8.4",
    "bourne": "0.3"
  },
  "devDependencies": {
    "nodemon": "latest"
  }
}

这是我尝试打开服务器时出错的server.js代码:

var express = require('express');
var path = require('path');
var Bourne = require("bourne");

var app = express();
var posts = new Bourne("simpleBlogPosts.json");
var comments = new Bourne("simpleBlogComments.json");

app.configure(function(){
    app.use(express.json());
    app.use(express.static(path.join(__dirname, 'public')));
});

app.get('/*', function (req, res) {
    res.render("index.ejs");
});

app.listen(3000);

完整错误:

> nodemon server.js

11 Mar 19:35:22 - [nodemon] v1.3.7
11 Mar 19:35:22 - [nodemon] to restart at any time, enter `rs`
11 Mar 19:35:22 - [nodemon] watching: *.*
11 Mar 19:35:22 - [nodemon] starting `node server.js`
undefined:0

^
SyntaxError: Unexpected end of input
    at Object.parse (native)
    at new Bourne (C:\Users\MyName\WebstormProjects\simpleBlog\node_modules\bou
rne\lib\bourne.js:52:30)
    at Object.<anonymous> (C:\Users\MyName\WebstormProjects\simpleBlog\server.j
s:6:13)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

在我决定发布这个问题之前,我确实在挖掘。其他地方的评论表明,如果您尝试使用未定义/空变量,或者您错过了&#39; {&#39;某处。

这个代码的情况似乎并非如此,而且这完全不在书中。

Webstorm确实注意到app.configure函数的参数数量无效&#39;而且它正在期待2&#39;

这本书本身并不老,已于2014年问世。

以防万一:这不是一个&#39;家庭作业&#39;问题,我正在尝试自学Backbone.js,而这恰好是本作者选择的技术,以促进学习任务包括Node.js和Express等。

提前致谢!

1 个答案:

答案 0 :(得分:1)

问题是bourne希望simpleBlogPosts.json包含有效的JSON文档,但该文件不包含。

简单地删除simpleBlogPosts.json并重新启动服务器就足以生成有效的JSON文件,即内容为[]。最有可能的是,您需要对simpleBlogComments.json执行相同操作。