节点JS:500服务器错误
问题描述:
我对这个节点js的东西有点新。所以,请忍受我。节点JS:500服务器错误
我在dotNetFin.js中有一个json字符串数组。我不确定为什么会出现错误(当我切换到关于页面),并且在命令提示符窗口中显示“未定义不是函数”
此外,如果我包括在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>
错误快照:
答
您需要将您的getTeamData
函数从dotnetFin.js文件导出。因此,只要改变,
var getTeamData = function() {
return dotnetTeam;
};
与
exports.getTeamData = function() {
return dotnetTeam;
};
和你的API应该工作。
您始终需要从节点模块(.js文件)中导出变量或方法,以便能够从需要该模块的其他文件访问它们。
答
require
不仅仅包含该文件,例如C/C++中的include
。
dotnetFin.json:
["V",
"M",
"A",
"H",
"A",
"G",
"K"]
,然后只需要There is an own API for modules然后可以require
d,但是你的情况下,可以通过只是更改dotnetFin.js
文件,以一个纯粹的JSON文件解决了很多更容易该文件:
var dotnetFin = require('./dotnetFin.json')
现在dotnetFis
包含文件中定义的数组。
在dotnetFin.js中,是否通过'module.exports.getTeamData = getTeamData'输出函数? –