出口默认路线; NodeJS中的SyntaxError

时间:2018-03-12 20:08:08

标签: javascript node.js mongodb terminal

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中不可用。这可能是其中之一吗?任何替代方案?

5 个答案:

答案 0 :(得分:1)

很可能您的Node项目未设置为使用ES6模块加载。

Node使用较旧的模块加载标准,称为CommonJS标准。为了让你的项目按照你拥有的方式使用ES6模块,你需要使用babel和webpack之类的工具。

如果您搜索我的名字和教程,我会在不到3分钟的时间内展示如何设置它。在这个例子中,它还设置了一个反应项目,除了那个之外你还会感兴趣。

答案 1 :(得分:0)

尝试使用module.exports.routes;

您想使用ES6模块语法。 这意味着应该支持ES6模块语法。

您可以至少以两种方式继续:

  • 使用babel npm包来转换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,错误将消失。此外,您可以让我们亲自转换您的代码。