MEAN Stack:模块 .exports 不是函数

Posted

技术标签:

【中文标题】MEAN Stack:模块 .exports 不是函数【英文标题】:MEAN Stack : module .exports is not a function 【发布时间】:2018-11-28 14:41:48 【问题描述】:

我的架构文件中出现错误。这是我的代码。

var mongoose = require('mongoose');

var jobListSchema = mongoose.Schema(
    companyName: String,
    jobtitle: String,
    location: String
);

const JobList = module.exports('JobList',jobListSchema);

这是我的错误:

TypeError: module.exports 不是函数 在对象。 (D:\product\project-1\models\joblist.js:9:24) 在 Module._compile (module.js:652:30) 在 Object.Module._extensions..js (module.js:663:10) 在 Module.load (module.js:565:32) 在 tryModuleLoad (module.js:505:12) 在 Function.Module._load (module.js:497:3) 在 Module.require (module.js:596:17) 在要求(内部/module.js:11:18) 在对象。 (D:\product\project-1\routes\users.js:8:17) 在 Module._compile (module.js:652:30) 在 Object.Module._extensions..js (module.js:663:10) 在 Module.load (module.js:565:32) 在 tryModuleLoad (module.js:505:12) 在 Function.Module._load (module.js:497:3) 在 Module.require (module.js:596:17) 在要求(内部/module.js:11:18)

【问题讨论】:

猜你想按Schema导出模型:module.exports = mongoose.model('JobList', jobListSchema); 【参考方案1】:

module.exports 是一个属性,而不是一个函数

试试这个

module.exports =  'jobList': jobListSchema ;

【讨论】:

【参考方案2】:

好像你想导出猫鼬模型而不是架构。

会是这样的:

db/JobList.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema

const definition = 
    companyName: Schema.Types.String,
    jobtitle: Schema.Types.String,
    location: Schema.Types.String
;

module.exports = mongoose.model('JobList', new Schema(definition));

奖金

express 应用示例中的使用示例:

const mongoose = require('mongoose');
mongoose.Promise = Promise;

// connection and etc... goes here
mongoose.connect(
  'mongo://127.0.0.1:21017/dbname_here', 
  
    config: autoIndex: false
  
);

// here we define models that we want to require
const JobList = require('./db/JobList');

const express = require('express'); // installation: npm i --save express
const app = express();
const _ = require('lodash'); // installation: npm i --save lodash


app.get('/vacancies', async (req, res) => 
  const query = _.pick(req.query, ['joblist', 'location', 'companyName']);
  const vacancies = await JobList.find(query).limit(20).lean();
  res.status(200).send(vacancies);
);

app.listen(8080);

【讨论】:

【参考方案3】:

也许尝试重构它...

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var jobListSchema = new Schema(
    companyName: String,
    jobtitle: String,
    location: String
);

module.exports = mongoose.model("NAME", jobListSchema);

【讨论】:

然后我收到错误,因为 const JobList = module.exports('JobList', jobListSchema); ^

以上是关于MEAN Stack:模块 .exports 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

Mean Stack -> Sequelize Mysql 关联

如何检查用户是不是经过身份验证以访问特定路径(MEAN STACK)

如何在WindowsAzure上搭建Mean stack环境之如何在中国版Azure上搭MangoDB

(MEAN STACK)后端在我提交表单时将objectId和__v:0保存在mongodb中

用户未在 MEAN Stack 中获得授权?

nginx 中 MEAN-stack 应用程序的漂亮 url