NodeJSとExpressを使用して単純なAPIを作成しようとしていますが、アプリケーションに外部のJavaScriptコードをインポートする際の問題が発生しています。NodeJSアプリケーションでのファイルのインポートに関する問題」
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ファイルは、私が親ディレクトリに保存されている2つのクラスを含む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ファイルが適切にインポートされていないようですが、なぜそうなるのかわかりません。どんな助けでも大歓迎です。
.jsのように見える?エラーはこのファイルから発生します。 –
こんにちは@ Pierre-YvesO。、私の更新された質問を参照してください。 – Danny
ちなみに、fovea.jsファイルは、直接実行するとうまく動作します。 – Danny