我正在尝试使用NodeJS和Express创建一个简单的API,但是遇到了将外部javascript代码导入我的应用程序的问题。我已经设置了以下基本测试代码:
var express = require("express");
var bodyParser = require('body-parser');
var fovea = require('../fovea.js');
var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8000;
var router = express.Router();
router.get('/', function(req, res) {
res.json({ message: "Welcome to the Fovea API" });
var lay = fovea.Layer2D("red", "layer");
console.log(lay.name);
});
fovea.js文件是一个js文件,其中包含两个我保存在父目录中的类。当我向根地址发送GET请求时,我得到以下错误是由于我尝试构造Layer2D对象引起的:
TypeError: Object #<Object> has no method 'Layer2D'
at Object.app.post.layer [as handle] (/home/daniel/Documents/coding/retina/retina/web/api/server.js:15:18)
at next_layer (/home/daniel/Documents/coding/retina/retina/web/api/node_modules/express/lib/router/route.js:103:13)
at Route.dispatch (/home/daniel/Documents/coding/retina/retina/web/api/node_modules/express/lib/router/route.js:107:5)
at c (/home/daniel/Documents/coding/retina/retina/web/api/node_modules/express/lib/router/index.js:195:24)
at Function.proto.process_params (/home/daniel/Documents/coding/retina/retina/web/api/node_modules/express/lib/router/index.js:251:12)
at next (/home/daniel/Documents/coding/retina/retina/web/api/node_modules/express/lib/router/index.js:189:19)
at Function.proto.handle (/home/daniel/Documents/coding/retina/retina/web/api/node_modules/express/lib/router/index.js:234:5)
at Layer.router (/home/daniel/Documents/coding/retina/retina/web/api/node_modules/express/lib/router/index.js:23:12)
at trim_prefix (/home/daniel/Documents/coding/retina/retina/web/api/node_modules/express/lib/router/index.js:226:17)
at c (/home/daniel/Documents/coding/retina/retina/web/api/node_modules/express/lib/router/index.js:198:9)
这是fovea.js文件中的相关类构造函数:
function Layer2D(name, graphDiv){
this.name = name;
this.graphDiv = graphDiv;
this.traces = [];
this.hlines = [];
this.vlines = [];
this.bounds = [];
this.visible = true;
};
我正在使用从Ubuntu 14.04 apt存储库安装的NodeJS v0.10.25。似乎fovea.js文件没有正确导入,但我无法弄清楚为什么会这样。任何帮助将不胜感激。
答案 0 :(得分:2)
因此,evaluatedPolicyDomainState
文件应如下所示:
fovea.js
在定义对象时,需要使用// web/fovea.js
function Layer2D (name, graphDiv) {
this.name = name;
// ...
}
exports.Layer2D = Layer2D;
关键字来实例化图层:
new