【问题标题】:Using Import In NodeJS server在 NodeJS 服务器中使用导入
【发布时间】:2017-07-27 11:58:23
【问题描述】:

目前我的 nodejs 服务器中的所有模块都作为 require() 导入,即:

let path = require('path');
let express = require('express');
let http = require('http');
let app = express();

但是我正在关注的教程显示它们导入为:

import express from 'express'
import path from 'path'

哪个会引发错误:

SyntaxError: Unexpected token import

我的 webpack.config.js 设置为:

module: {
    rules: [
        {
            test: /\.js?$/,
            use: 'babel-loader',
            exclude: /node_modules/
        }
    ]
}

在 bablerc 中:

{
  "presets": ["es2015", "react"]
}

我的包版本:

   "babel-core": "^6.7.6",
    "babel-loader": "^6.2.4",
    "babel-preset-es2015": "^6.6.0",
    "babel-preset-react": "^6.5.0",

   "react": "^15.0.1",

  "devDependencies": {
    "babel-cli": "^6.18.0",
    "babel-preset-env": "0.0.3",
    "webpack": "^2.2.1",
    "webpack-dev-middleware": "^1.10.1",
    "webpack-dev-server": "^2.4.1",
    "webpack-hot-middleware": "^2.17.1"
  }

Import 适用于我所有的 react 组件文件,但不适用于 server.js。如何将我的服务器切换到 Import from require?

【问题讨论】:

    标签: node.js reactjs


    【解决方案1】:

    它适用于 webpack 的情况,因为代码是通过 babel 运行的。你可以通过 babel 运行你的 node.js 代码。

    如果没有 babel cli,请安装它

    npm install --save-dev babel-cli
    

    然后像这样运行你的代码:

    ./node_modules/.bin/babel-node server.js
    

    或者放在package.json中。

    {
      "scripts": {
        "start": "babel-node server.js"
      }
    }
    

    【讨论】:

    • 据我了解,nodejs 开发团队中有一些关于如何处理导入语句的讨论。它应该在某个时候包含在节点中,但现在它是 babel...
    • 这将与 babel 的做法大不相同。在可预见的未来,我可能会继续使用 babel 的实现。
    • 为什么要安装babel-cli来使用babel-node?你的解决方案实际上根本没有帮助。还是一样的错误。
    • 现在你可以把"type": "module"放在你的JSON包上
    • 当我们有 nodemon 时如何使用 babel-node 命令?
    【解决方案2】:

    默认情况下,您将使用 ES5,并且需要使用 require 来拉入模块。随着我们向 ES6 及更高版本前进,我们最好开始使用 ES6 类以及导入和导出语句。为此,我们需要 Babel 来解释我们的 ES6 语法。

    1. npm install --save-dev babel-cli
    2. npm install --save-dev babel-preset-es2015
    3. 让我们将 babel-clibabel preset es2015 都作为开发依赖项引入,并添加 .babelrc 文件:
    {
      "presets": ["es2015"]
    }
    

    如果您按照上述步骤操作,问题应该会消失

    更多信息请见:https://codebrains.io/setting-up-express-with-es6-and-babel/

    【讨论】:

    • 对 nodemon 有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 2020-04-16
    • 2015-07-06
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多