【问题标题】:How to import and export files in NodeJS?如何在 NodeJS 中导入和导出文件?
【发布时间】:2019-01-31 19:03:35
【问题描述】:

https://hastebin.com/ipuyupuqop.js主JS文件

https://hastebin.com/meninifuku.js JS 文件有问题

我一直在研究 API,但是,路由似乎不起作用。我已经克服了一些问题,但是,这是对我影响最大的问题。

C:\Users\-----\WebstormProjects\BoR-CORE\routes\v1\account.js:3
let router = express.Router();
                     ^

TypeError: Cannot read property 'Router' of undefined
    at Object.<anonymous> (C:\Users\-----\WebstormProjects\BoR-CORE\routes\v1\account.js:3:22)
    at Module._compile (module.js:660:30)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)
    at tryModuleLoad (module.js:513:12)
    at Function.Module._load (module.js:505:3)
    at Module.require (module.js:604:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (C:\Users\-----\WebstormProjects\BoR-CORE\app.js:17:15)
    at Module._compile (module.js:660:30)

【问题讨论】:

标签: javascript node.js express npm node-modules


【解决方案1】:

在我看来,您正在导出错误的文件。您需要导出路由器并将其导入app.js

应该是这样的:

//File router/index.js
const user         = require('./user'),
      error        = require('./error'),
      response     = require('./response');

module.exports = function(app) {

    app.get('/v1/details', user.checkUser, user.getDetails, response.sendResponse);

    app.post('/v1/details', user.checkUser, user.insertDetails, response.sendResponse);

};



//Your `app.js`

"use strict";
//NPM Modules
const express           = require('express'),
      path              = require('path'),
      cookieParser      = require('cookie-parser'),
      bodyParser        = require('body-parser'),
      //Internal Modules
      router            = require('./router');

var app = express();

// configure the app to use bodyParser()
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());

console.log('server listening at 127.0.0.1 over port 2318'.info);

app.use(cookieParser());
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, 'public')));

router(app);

let port = process.env.PORT || 8080;
app.listen(port);

【讨论】:

    【解决方案2】:

    我认为问题出在您的第二个文件中。

    不需要主应用程序获取 express 对象,只需 require('express') 本身即可。

    我认为它应该以这种方式工作。

    【讨论】:

      【解决方案3】:

      你应该像module.exports = router;一样导出路由器

      【讨论】:

        猜你喜欢
        • 2020-04-13
        • 2021-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-19
        • 1970-01-01
        • 2020-11-10
        相关资源
        最近更新 更多