我正在使用resity
和babel
撰写应用程序。在我的route.js
:
export default respond = (req, res, next) => {
res.send('hello');
next();
}
我的index.js
:
import restify from 'restify';
import route from './route';
const server = restify.createServer();
server.get('/bonjour', route);
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});
和我的.babelrc
:
{
"presets": ["es2015", "stage-2"]
}
编译后,输出route.js
:
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = respond = function respond(req, res, next) {
res.send('hello');
next();
};
当我运行node index.js
时,出现以下错误:
exports.default = respond = function respond(req, res, next) {
^
ReferenceError: respond is not defined
任何人都可以解释为什么会这样。谢谢。
答案 0 :(得分:1)
了解export default
是什么很重要。它有两种形式:
export default _THING_EVALUATING_TO_VALUE_;
export default function fn() {}
或class Name {}
由于您的赋值不是函数或类声明,因此您使用的是第一个,这意味着它是一个计算值的东西。你的代码就可以了。问题是respond =
是一个赋值,变量respond
未在任何地方声明。
所以如果你做了
,你的代码就可以了let respond;
export default respond = (req, res, next) => { }
或者您可以删除变量赋值并执行
export default (req, res, next) => { }
或者您可以使用函数声明
export default function respond(req, res, next) { }