【问题标题】:Cannot redeclare block-scoped variable 'BlogPost'无法重新声明块范围变量“BlogPost”
【发布时间】:2020-06-07 11:10:23
【问题描述】:

我正在使用 Typescript 和 NextJS 我的 api.tsx 和 blogPost.tsx 文件都出现以下提到的 Typescript 错误:

无法重新声明块范围变量“BlogPost”.ts(2451) api.tsx(3, 7): 'BlogPost' 也在这里声明。

我的 blogPost.tsx 文件也出现此错误

当 '--isolatedModules' 标志为 提供。

这是我的代码:

blogPost.tsx

const mongoose=require('mongoose');
const Schema = mongoose.Schema;
const BlogPostSchema = new Schema({
title: String,
body: String,
date: {
    type: String,
    default: Date.now()
}
 });

const BlogPost = mongoose.model('BlogPost', BlogPostSchema); //error on this line

api.tsx

const express= require('express');
const router=express.Router();
const BlogPost=require('../models/blogPost');


//Routes

router.get('/api', (req, res) => {


    BlogPost.find({ })
    .then((data)=> {
        console.log('Data:', data);
        res.json(data);
    })

    .catch((error)=>{
        console.log('error:');
    });

    // res.json(data);

    });

   router.get('/api/name', (req, res) => {
    const data = {
        username: 'caa',
        age: 5
    };
    res.json(data);

    });

module.exports=router;

【问题讨论】:

  • blogPost.tsx中尝试module.export = mongoose.model('BlogPost', BlogPostSchema);

标签: reactjs typescript next.js


【解决方案1】:

当 TS 无法将您的文件识别为模块时,会发生此错误。 当它使用import / export 语法时,它将文件定义为模块。

尝试将其更改为使用import / export 语法。

import mongoose from 'mongoose';

const Schema = mongoose.Schema;
const BlogPostSchema = new Schema({
  title: String,
  body: String,
  date: {
    type: String,
    default: Date.now(),
  },
});

export const BlogPost = mongoose.model('BlogPost', BlogPostSchema); 
import express from 'express';
import { BlogPost } from '../models/blogPost';

export const router = express.Router();

//Routes

router.get('/api', (req, res) => {
  BlogPost.find({})
    .then(data => {
      console.log('Data:', data);
      res.json(data);
    })

    .catch(error => {
      console.log('error:');
    });

  // res.json(data);
});

router.get('/api/name', (req, res) => {
  const data = {
    username: 'caa',
    age: 5,
  };
  res.json(data);
});

【讨论】:

    猜你喜欢
    • 2018-08-29
    • 2018-08-02
    • 2016-06-15
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 2022-10-30
    相关资源
    最近更新 更多