在 NodeJS 服务器中使用导入

IT技术 node.js reactjs
2021-05-05 01:22:14

目前,我的 nodejs 服务器中的所有module都作为 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"
  }

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

2个回答

它适用于 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"
  }
}

默认情况下,您将使用 ES5,并且需要使用它require来拉入module。随着 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"]
}

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

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