【发布时间】:2016-09-28 22:03:47
【问题描述】:
在使用 mongoose for MongoDB 的 NodeJS 项目时,我使用以下代码 sn-p 导入所有 mongoose 模型。
fs.readdirSync(modelsPath).forEach(function (file) {
require(modelsPath + '/' + file);
});
这工作完美无缺。
最近,我开始从事 Rubix 项目。它包括一个带有 ES6 代码的 nodeJs 服务器(使用 babel)。
上述导入猫鼬模型的代码sn-p 不起作用。
在进一步的实验中,我发现对于require(),不允许使用变量。如果在require中写入文件路径本身,即
require('path/to/file'),它有效。但是如果我做类似的事情
var filePath = 'path/to/file';
require(filePath);
它停止工作。没有错误。它只是在启动服务器之前挂起。
我是否缺少 ES6 的任何基本内容?
编辑
以下是我要导入的模块的内容
var express = require('express'),
router = express.Router(),
mongoose = require('mongoose'),
User = mongoose.models.User,
api = {},
auth = require('../utils/apiAuth'),
_ = require("lodash"),
apiResponse = require('../utils/apiResponse'),
apiErrors = require('../utils/apiErrors'),
config = require('../config/config'),
bcrypt = require("bcryptjs");
// ALL
api.users = function (req, res) {
console.log('here?');
User.find(function(err, users) {
if (err) {
return apiResponse.sendError(apiErrors.APPLICATION.INTERNAL_ERROR, null, 500, req, res);
} else {
return apiResponse.sendResponse(users, 200, req, res);
}
});
};
//.... other apis ....//
router.get('/users', api.users);
module.exports = router;
它适用于我之前合作过的所有项目。 会不会和Rubix有关?
【问题讨论】:
-
刚刚试了一个例子,确实有效。你能展示你的模块的内容吗?
-
感谢@DrakaSAN 的及时回复。我已经用模块详细信息编辑了问题。
-
你如何导入它,我没有看到模块中出现任何错误。您还可以减少代码以制作 MCVE,这将阻止您共享大部分代码(对我们来说很无聊,对您来说可能很危险),这是双赢的 :)
-
@DrakaSAN 是的,模块中的代码没有错误。我正在导入它,如上所述
var filePath = 'path/to/file'; require(filePath); -
@DrakaSAN 我在 Rubix 项目中实现它。我没有太多使用 ES6。还有 Rubix,一点也不!我分享的代码sn-p,我之前在几个项目中使用过,它可以工作。所以模块中肯定没有问题。看看我是否能在 Rubix 中找到任何东西。感谢您的宝贵时间。
标签: node.js ecmascript-6