最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

成为错误:无法在模块外使用导入语句

网站源码admin39浏览0评论

成为错误:无法在模块外使用导入语句

成为错误:无法在模块外使用导入语句

我想用 MERN 堆栈创建应用程序,我要让用户使用 jwt 进行身份验证。 我创建了 userRouter.js 文件:

import express from 'express';
import User from '../models/userModel.js';
import { generateToken } from '../utils';
import expressAsyncHandler from 'express-async-handler'

const userRouter = express.Router();

userRouter.post('/register',expressAsyncHandler(async (req, res)=>{
    const user = await User.findOne({email: req.body.email});
    if(user){
        if(bcryptpareSync(req.body.password, user.password)){
            res.send({
                _id: user._id,
                name: user.name,
                email:user.email,
                token: generateToken(user)
            });
            return;
        }
    }
    res.status(401).send({message: 'Invalid email or password'})
})
);

export default userRouter;

在 server.js 中,我添加了这个:

const express = require('express');
const port = process.env.PORT || 5000 ;
const dbConnection = require('./db');
const userRouter  = require('./routes/usersRoute');

const app = express();
app.use(express.json());


app.use('/api/cars/', require('./routes/carsRoute'));
app.use('/api/users',userRouter)  //this

app.use((err,req,res,next)=>{
    res.status(500).send({message:err.message});
});

app.get('/',(req,res)=>res.send('Hello World!'))
app.listen(port, ()=> console.log(`Node.js server started in port ${port}`))

但是在 Node 的控制台中,写:

C:\Users\201217040\Documents\CarRentalApp\routes\usersRoute.js:1
import express from 'express';
^^^^^^
SyntaxError: Cannot use import statement outside a module
    at ObjectpileFunction (node:vm:355:18)
    at wrapSafe (node:internal/modules/cjs/loader:1022:15)
    at Module._compile (node:internal/modules/cjs/loader:1056:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1121:10)      
    at Module.load (node:internal/modules/cjs/loader:972:32)
    at Function.Module._load (node:internal/modules/cjs/loader:813:14)
    at Module.require (node:internal/modules/cjs/loader:996:19)
    at require (node:internal/modules/cjs/helpers:92:18)
    at Object.<anonymous> (C:\Users\201217040\Documents\CarRentalApp\server.js:4:21) 
    at Module._compile (node:internal/modules/cjs/loader:1092:14)
[nodemon] app crashed - waiting for file changes before starting...

我该如何解决这个问题? 是关于在项目中使用 import 和 require 吗?

回答如下:

你需要做的是将所有

import
语句更改为
require
语句。您不能在节点应用程序中混合使用这两者,您必须同时使用其中一个或另一个。或者,您可以将所有
require
语句更改为
import
语句。只要您始终如一,两者都会起作用。

在所有导入语句都转换为 require 语句后,这是我从你的仓库中分叉出来的 repo 的链接:https://github/rsg71/carRentalApp

发布评论

评论列表(0)

  1. 暂无评论