Unexpected token import

koa连接mongodb数据库时报错Unexpected token import,已引入babel

server.js

const db = require('./mongodb/db');

const Koa = require('koa');
const webpack = require('webpack');
const merge = require('webpack-merge');

const KoaRouter = require('koa-router')();

const Monk = require('monk');
const schema = require('./mongodb/schema');

const opn = require('opn');
const config = merge(require('../config/webpack.config.dev'));
const appConfig = require('../app.config');
const currentIP = require('ip').address();
const uri = `http://${currentIP}:${appConfig.appPort}`;
const clientCompiler = webpack(config);
const devMiddleware = webpackDevMiddleware(clientCompiler, {
    publicPath: config.output.publicPath,
    headers: {'Access-Control-Allow-Origin': '*'},
    stats: {
        colors: true,
        modules: false,
    },
    noInfo: false,
});
// koa server
const app = new Koa();
// dateBase.connect();
db.connect((err) => {
    if (err) throw err;

    console.log('success');
});

devMiddleware.waitUntilValid(() => {
    // console.log('> Listening at ' + uri + '\n');
    // opn(uri)
});

// 错误处理
app.on('error', (err) => {
    console.error('Server error: \n%s\n%s ', err.stack || '');
});

app.listen(appConfig.appPort);

schema.js

import mongoose from 'mongoose';
const Schema = mongoose.Schema;

const UserModel = new Schema({
    name: String,
});

const User = mongoose.model('user', UserModel);

module.exports = {
    User
};

.babelrc

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ],
  "plugins": [
    "react-hot-loader/babel"
  ]
}

前端页面是可以用import引入的,server端的代码不可以
由于学习不深入,所以不知道问题出在哪里,请各位大神指教

阅读 3.3k
2 个回答

node是不支持import语法,你可以换成require的方式引入模块;

const mongoose = require('mongoose');

如果使用babel的 ,入口文件也同样是不能使用import的,具体的配置方法可以自行百度。你的babel应该是配置不对,所以报错了。

NodeJS对ES6的支持尚处于试验阶段,默认不打开,所以import语法也不支持。如何打开请参考文档:https://nodejs.org/api/esm.ht...
如果不使用ES Module使用Babel也是可行的,配置环节比较长,不知道你参考的哪篇文章,可以看看这里:https://medium.com/@JedaiSabo...
我觉得你可能是在执行的时候没有用babel-node:

./node_modules/.bin/babel-node schema.js
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题