繁体   English   中英

导出默认路由; NodeJS 中的语法错误

[英]export default routes; SyntaxError in NodeJS

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,在 node ver 9 中本身是不可用的。 这可能是其中之一吗? 有什么选择吗?

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

Node 使用一种较旧的模块加载标准,称为 CommonJS 标准。 为了让您的项目以您拥有的方式使用 ES6 模块加载,您需要使用 babel 和类似 webpack 的工具。

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

尝试使用module.exports.routes;

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

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

  • 使用 babel npm 包转译 ES6 风格
  • 重构以使用上述语法。

您需要在根文件夹中创建一个与 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 模块语法。

节点版本 8.xx 不支持导入。 使用最新版本的node 9.xx,错误就会消失。 此外,您可以使用 babel 来转译您的代码。

我从侧面遇到了相同的问题,我意识到我已经使用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;

您需要在文件中创建与 index.js 相同的文件并添加

module.exports = router;

在 index.js 中添加这个

const postRoutes=require('./routes/posts')
app.use('/post',postRoutes);

您必须在 package.json 中的“脚本”之前添加“类型”:“模块”并更改每个 // const express=require('express'); to //从'express'导入快递

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM