在NodeJS服务器中使用导入

Cod*_*cha 9 node.js reactjs

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

let path = require('path');
let express = require('express');
let http = require('http');
let app = express();
Run Code Online (Sandbox Code Playgroud)

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

import express from 'express'
import path from 'path'
Run Code Online (Sandbox Code Playgroud)

哪个引发错误:

SyntaxError: Unexpected token import
Run Code Online (Sandbox Code Playgroud)

我的webpack.config.js设置为:

module: {
    rules: [
        {
            test: /\.js?$/,
            use: 'babel-loader',
            exclude: /node_modules/
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在bablerc中:

{
  "presets": ["es2015", "react"]
}
Run Code Online (Sandbox Code Playgroud)

我的包版本:

   "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"
  }
Run Code Online (Sandbox Code Playgroud)

导入适用于我的所有反应组件文件,而不是server.js.如何将服务器切换到从require导入?

Bri*_*and 14

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

如果你没有它,请安装babel cli

npm install --save-dev babel-cli
Run Code Online (Sandbox Code Playgroud)

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

./node_modules/.bin/babel-node server.js
Run Code Online (Sandbox Code Playgroud)

或者把它放在package.json中.

{
  "scripts": {
    "start": "babel-node server.js"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么要安装`babel-cli`来使用`babel-node`?而您的解决方案实际上根本没有帮助。还是一样的错误。 (2认同)

小智 5

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

  1. npm install --save-dev babel-cli
  2. npm install --save-dev babel-preset-es2015
  3. 让我们将babel-clibabel 预设 es2015作为开发依赖项并添加.babelrc文件:
{
  "presets": ["es2015"]
}
Run Code Online (Sandbox Code Playgroud)

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

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