【发布时间】:2018-08-28 00:47:23
【问题描述】:
我正在使用 Babel 和 ESLint 在 Express 中设置一个全新的项目,并尝试设置动态路由。唯一的问题是我无法弄清楚如何为路线调用加载程序。这是我当前关于加载程序的代码。
routes/index.js
import fs from 'fs';
/**
* Register Default Routes
* @param {Object} app express.Application
*/
export default function(app) {
fs.readdirSync(__dirname).forEach((fileName) => {
if (fileName == __filename.slice(__dirname.length + 1)) return;
let fileNameStripped = fileName.substring(0, fileName.lastIndexOf('.'));
require('./' + fileNameStripped)(app); // does not work
});
}
index.js
import express from 'express';
import routes from './routes/index.js';
const app = express();
app.use(express.static('public'));
routes(app); // works now
...
Babel 错误
TypeError: require(...) is not a function
at /app/build/routes/index.js:1:314
at Array.forEach (<anonymous>)
at exports.default (/app/build/routes/index.js:1:195)
at Object.<anonymous> (/app/build/index.js:1:393)
at Module._compile (module.js:649:30)
at Object.Module._extensions..js (module.js:660:10)
at Module.load (module.js:561:32)
at tryModuleLoad (module.js:501:12)
at Function.Module._load (module.js:493:3)
at Function.Module.runMain (module.js:690:10)
【问题讨论】:
-
这是基于stackoverflow.com/questions/29923879/…,尽管它不起作用。
-
目前还不清楚是什么问题。上面的代码是否对您不起作用,如果不起作用,它有什么问题?我不明白为什么它是一个进口很重要。这是一个可以接受参数的函数,无论是否导入。
-
这个问题是没有调用该函数,routes/index.js和index.js中的那个
-
嗯,它应该,因为你叫它。如果有问题,应该有错误。目前没有人可以调试它。考虑提供可以复制问题的stackoverflow.com/help/mcve - 回购、在线服务或其他。否则,该问题将被视为题外话。
-
好的,正在编辑..
标签: node.js express ecmascript-6 babeljs