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

Javascript Node.js--未定义:0语法错误:输入意外结束,javascript,jquery,json,node.js,backbone.js,Javascript,Jquery,Json,Node.js,Backbone.js,只是用Node.js和Backbone.js弄湿了我的脚。我正在使用《主干蓝图》一书,他提供的一些设置Web服务器的代码似乎不起作用 我已经安装并运行了Node.js(我知道这是可行的)。他的package.json代码似乎做到了这一点,但我将在下面发布它,以防万一: { "name": "simple-blog", "description": "This is a simple blog.", "version": "0.1.0", "scripts": { "sta

只是用Node.js和Backbone.js弄湿了我的脚。我正在使用《主干蓝图》一书,他提供的一些设置Web服务器的代码似乎不起作用

我已经安装并运行了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
>nodemon server.js
3月11日19:35:22-[nodemon]v1.3.7
3月11日19:35:22-[nodemon]要随时重新启动,请输入'rs'`
3月11日19:35:22-[nodemon]观看:**
3月11日19:35:22-[nodemon]正在启动`node server.js`
未定义:0
^
SyntaxError:输入意外结束
at Object.parse(本机)
在新伯恩(C:\Users\MyName\WebStormProject\simpleBlog\node\u modules\bou)
rne\lib\bourne.js:52:30)
反对。(C:\Users\MyName\websprojects\simpleBlog\server.j
s:6:13)
在模块处编译(Module.js:460:26)
在Object.Module.\u extensions..js(Module.js:478:10)
在Module.load(Module.js:355:32)
在Function.Module.\u加载(Module.js:310:12)
位于Function.Module.runMain(Module.js:501:10)
启动时(node.js:129:16)
在node.js:814:3
在我决定发布这个问题之前,我做了一些挖掘工作。其他地方的注释表明,如果您试图使用未定义/空变量,或者在某个地方缺少“{”,则可能发生这种情况

这段代码似乎不是这样的,这是本书中直接提到的

Webstorm确实注意到app.configure函数具有“无效数量的参数”,并且“应为2”

这本书在2014年出版,一点也不老

以防万一:这不是一个“家庭作业”问题,我正在尝试自学Backbone.js,碰巧作者选择了一些技术来促进学习探索,其中包括Node.js和Express


提前感谢!

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


只需删除
simpleBlogPosts.json
并重新启动服务器,就足以生成一个有效的json文件,即包含
[]
。最有可能的情况是,您需要对
simpleBlogComments.json

执行相同的操作。您可以包含
simpleBlogPosts.json
的内容吗?根据错误消息,问题似乎出在您让Bourne读取的json文件中。@phihag,它是空白的。我相信这些文件是按程序生成的。如果这本来就是issue,为什么作者会这样说:“实际上,此时,您可以在命令行上运行npm start并在浏览器中打开。您将得到一个错误,因为我们尚未创建视图模板文件,但您可以看到我们的服务器正在工作。”我应该注意到,我继续创建了他指定的视图文件,并将其放置在适当的位置,但什么也没有发生。您是否确实创建了一个空的
simpleBlogPosts.json
文件?它是一个json文件,因此如果它存在且为空,则它不是有效的json,并将抛出。看起来,如果不存在,Bourne将正确创建它,但是通过将它放在那里并清空,Bourne会出错。这是您从
JSON.parse(“”)获得的错误消息
我没有创建它,但该文件之所以存在,是因为它是由伯恩自动创建的。如果它创建的文件本身是空白的,那么如果整个东西都内爆了,该应用程序如何工作呢?这难道不是这本书要解决的问题吗“哦,如果你在完成我告诉你的一切之后尝试打开你的服务器,那么整个事情都会在命令行出错”?