node.js ReferenceError:服务器未定义

Posted

技术标签:

【中文标题】node.js ReferenceError:服务器未定义【英文标题】:node.js ReferenceError: server is not defined 【发布时间】:2017-06-20 05:28:27 【问题描述】:

以下代码来自 server.js,它导致我的服务器因错误而崩溃:

ReferenceError:服务器未在对象中定义。 (C:\xampp\htdocs\api\src\server.js:17:18) 在 Module._compile (module.js:571:32) 在 Object.Module._extensions..js (module.js:580:10 ) 在 Module.load (module.js:488:32) 在 tryModuleLoad (module.js:447:12) 在 Function.Module._load (module.js:439:3) 在 Module.runMain (module.js:605 :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);
  );
);

我错过了一个包裹吗?我正在观看具有相同代码的视频,但它不会导致服务器崩溃。

【问题讨论】:

错误似乎很明显:您试图将server 分配给module.exports,但变量server 不存在。你期望server 是什么?你为什么要从那个模块中导出一些东西?重现错误的最简单示例:将module.exports = foo; 放入文件并运行它。它会抱怨foo 没有定义。这与 Node、nvm、express 或任何库无关。这正是 javascript 的工作原理:您无法读取不存在的变量。 我知道,我明白了。但是,它正在使用完全相同的代码处理我正在观看的内容,所以发生了一些事情。 “它正在处理我正在观看的内容” server 是在某处定义的,或者他们没有使用 server。由于我们看不到视频,所以我们无法说。我们只能说使用server 是您代码中的问题。 【参考方案1】:

您想导出app。不存在名为server 的变量

module.exports = app;

然后,您可以使用 require 在项目的其他位置导入 app

【讨论】:

【参考方案2】:

server 没有在任何地方定义。作为猜测,您可能希望将最后一行更改为:

module.exports = app;

【讨论】:

以上是关于node.js ReferenceError:服务器未定义的主要内容,如果未能解决你的问题,请参考以下文章

node.js - ReferenceError:导航器未定义

ReferenceError: primordials 未在 node.js 中定义

第一次使用 node.js - “ReferenceError: node is not defined”

ReferenceError:TextEncoder 没有用猫鼬定义 Node.js

ReferenceError:变量未定义-Node.js

解决 Node.js 中的“Uncaught ReferenceError: require is not defined”错误