const routes = (app) => {
app.route('/contact')
.get((req, res, next) => {
// middleware
console.log(`Request from: ${req.originalUrl}`)
console.log(`Request type: ${req.method}`)
next();
}, (req, res, next) => {
res.send('GET request successful!!!!');
})
.post((req, res) =>
res.send('POST request successful!!!!'));
app.route('/contact/:contactId')
.put((req, res) =>
res.send('PUT request successful!!!!'))
.delete((req, res) =>
res.send('DELETE request successful!!!!'));
}
export default routes;
执行时产生此错误:
export default routes;
^^^^^^
SyntaxError: Unexpected token export
我实际上是想在培训视频中跟进,所以我对此有点新鲜。根据我的理解,他试图使用ES6,我知道一些命令,比如import,在本地节点版本9中不可用。这可能是其中之一吗?任何替代方案?
答案 0 :(得分:1)
很可能您的Node项目未设置为使用ES6模块加载。
Node使用较旧的模块加载标准,称为CommonJS标准。为了让你的项目按照你拥有的方式使用ES6模块,你需要使用babel和webpack之类的工具。
如果您搜索我的名字和教程,我会在不到3分钟的时间内展示如何设置它。在这个例子中,它还设置了一个反应项目,除了那个之外你还会感兴趣。
答案 1 :(得分:0)
尝试使用module.exports.routes;
您想使用ES6模块语法。 这意味着应该支持ES6模块语法。
您可以至少以两种方式继续:
答案 2 :(得分:0)
我从侧面遇到了同样的问题,我意识到我已经使用require
代替了import
ES6语法来导入依赖项。我只是使用module.exports=router
注意:如果您使用ES6导入,那么您在问题中编写的代码将可以正常使用。 在这里,您可以找到我的代码示例。
const express = require('express');
let router = express.Router();
router.post('/', (req, res) => {
res.status(201).json({
success: true
});
});
// make the export
module.exports = router;
答案 3 :(得分:0)
您需要在根文件夹中创建与server.js或index.js相同的.babelrc文件,并添加和对象,如下所示:
{
"presets": [
"env",
"stage-0"
]
}
这将告诉节点使用预设的env和stage-o。我假设您下载了babel插件。
以防万一,请记住使用以下方法配置server.js(以我为例):
"scripts": {
"start": "nodemon ./server.js --exec babel-node -e js"
},
使用ES6模块语法。
答案 4 :(得分:-1)
节点版本8.x.x不支持导入。使用最新版本的节点9.x.x,错误将消失。此外,您可以让我们亲自转换您的代码。