在NodeJS应用程序中导入文件的问题

时间:2016-07-15 14:21:53

标签: node.js express

我正在尝试使用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文件没有正确导入,但我无法弄清楚为什么会这样。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

因此,evaluatedPolicyDomainState文件应如下所示:

fovea.js

在定义对象时,需要使用// web/fovea.js function Layer2D (name, graphDiv) { this.name = name; // ... } exports.Layer2D = Layer2D; 关键字来实例化图层:

new
相关问题