节点JS:500服务器错误

我有点新的这个节点的事情。 所以,请忍受我。

我在dotNetFin.js中有一个jsonstring数组。 我不确定为什么会出现错误(当我切换到关于页面),并且在命令提示符窗口中显示“未定义不是函数”

另外,如果我在app.js中包含这个json数组,一切正常。

那么这里是我的代码:

app.js

var express = require('express'); var app = express(); app.set('port', process.env.PORT || 3000); app.get('/', function (req, res) { res.render('home'); }); var teamData = require('./dotnetFin.js'); app.get('/about', function (req, res) { res.render('about', { dotnet: teamData.getTeamData() }); }); //custom 404 page app.use(function (req, res) { res.type('text/plain'); res.status(404); res.send('404 Not Found'); }); app.use(function (err, req, res, next) { console.log(err.stack); res.type('text/plain'); res.status(500); res.send('500 Server Error'); }); app.listen(app.get('port'), function () { console.log('Express started on server' + app.get('port')); }); var handleBars = require('express3-handlebars').create({ defaultLayout: 'main' }); app.engine('handlebars', handleBars.engine); app.set('view engine', 'handlebars'); 

dotnetFin.js

 var dotnetTeam = ["V", "M", "A", "H", "A", "G", "K"]; var getTeamData = function () { return dotnetTeam; }; 

main.handlebars

 <!doctype html> <html> <head> <h2>Fin</h2> </head> <body> {{{body}}} </body> </html> 

about.handlebars

 <h1>About Fin</h1> <h2>Dotnet Team</h2> <h3>{{dotnet}}</h3> 

错误快照:

在这里输入图像描述

在这里输入图像描述

您需要从dotnetFin.js文件中导出您的getTeamData函数。 所以只要改变,

 var getTeamData = function () { return dotnetTeam; }; 

 exports.getTeamData = function () { return dotnetTeam; }; 

和你的API应该工作。

您始终需要从节点模块(.js文件)中导出variables或方法,以便能够从需要该模块的其他文件访问它们。

require不要简单地包含文件,例如include在C / C ++中。 有一个模块自己的API,然后可以require d,但只要将您的dotnetFin.js文件更改为纯json文件,就可以轻松解决您的问题:

dotnetFin.json

 ["V", "M", "A", "H", "A", "G", "K"] 

然后只需要该文件:

 var dotnetFin = require('./dotnetFin.json') 

现在, dotnetFis包含文件中定义的数组。