刚刚用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等。
提前致谢!
答案 0 :(得分:1)
问题是bourne希望simpleBlogPosts.json
包含有效的JSON文档,但该文件不包含。
简单地删除simpleBlogPosts.json
并重新启动服务器就足以生成有效的JSON文件,即内容为[]
。最有可能的是,您需要对simpleBlogComments.json
执行相同操作。