以下のコードがあると定義されていない、エラーでクラッシュして自分のサーバーを引き起こしている:はにReferenceErrorをNode.jsの:サーバーは<strong>server.js</strong>から
にReferenceError:サーバーはオブジェクトで定義されていません。 Object.Module._extensions..js(module.js:580:10)にあるModule._compile(module.js:571:32)のファイル(C:\ xampp \ htdocs \ api \ src \ server.js:17:18) Module.runMain(module.js:605)のFunction.Module._load(module.js:439:3)のtryModuleLoad(module.js:447:12)のModule.load(module.js:488:32) :実行時10)(bootstrap_node.js:418:7)起動時(bootstrap_node.js:139:9)でbootstrap_node.js:533:3
var express = require('express');
var body_parser = require('body-parser');
var app = express()
// Port config
var port = 3000;
app.use(body_parser.json());
// Use prefix of api
app.use('/api', require('../routes/api.js')(express));
app.listen(port, function(){
console.log('Server Active on', port);
});
module.exports = server;
モカ試験(__app.js)
var request = require('supertest');
describe('API', function() {
var server;
beforeEach(function() {
server = require('../src/server.js');
});
afterEach(function() {
server.close();
});
it('/ should return specified object.', function (done) {
request(server)
.get('/api/')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200, {"hello": "world"}, done);
});
it('/status should return specified healthy:true', function (done) {
request(server)
.get('/api/status')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200, {"healthy": true}, done);
});
it('/user/id should return user object with id.', function (done) {
var fakeUserID = 374;
request(server)
.get('/api/user/347' + fakeUserID)
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200, {user: {id: fakeUserID}}, done);
});
});
パッケージがありませんか?私は同じ正確なコードでビデオを見ているし、サーバーをクラッシュさせません。
エラーを使用してプロジェクトの他の場所
app
をインポートすることができます存在しないかなり明白と思われます変数 'server'は存在しません。 'server'は何を期待していますか?なぜあなたはそのモジュールから何かをエクスポートしていますか?エラーを再現する最も単純な例: 'module.exports = foo;'をファイルに入れて実行します。 'foo'が定義されていないと不平を言うでしょう。これは、Node、nvm、express、または任意のライブラリとは関係ありません。それはJavaScriptの仕組みです:あなたは変数が存在しないのを読むことはできません。 –私は知っている、私はそれを得る。しかし、それは私が正確に同じコードで見ているものに取り組んでいるので、何かが続いています。 – Scary
*「私が見ているものに取り組んでいます」* 'server'はどこかで定義されているか、' server'を使用していません。私たちはビデオを見ることができないので、私たちは言うことができません。私たちが言うことができるのは、あなたのコードで 'server'を使うことが問題だということだけです。 –