SyntaxError: Identifier '__dirname' has already been declared

SyntaxError: Identifier '__dirname' has already been declared

您好,我正在尝试在我的 server.js 中创建一个静态文件夹用于图片上传,但是当我声明 const __dirname = path.resolve() 时,错误消息

"const __dirname = path.resolve() ^

语法错误:标识符“__dirname”已被声明

被抛出

require('dotenv').config()
const path = require('path')
const express = require('express')
const server = express()
const { notFound, errorHandler } = require('./middleware/errorMiddleware')
const { connectDB } = require('./config/db')

const productRoutes = require('./routes/productRoutes.routes')
const userRoutes = require('./routes/userRoutes.routes')
const orderRoutes = require('./routes/orderRoutes.routes')
const uploadRoutes = require('./routes//uploadRoutes.routes')
connectDB()

server.use(express.json())

server.get('/', (req, res) => {
  res.send('API is running.........')
})
//Routes
server.use('/api/products', productRoutes)
server.use('/api/users', userRoutes)
server.use('/api/orders', orderRoutes)
server.use('/api/upload', uploadRoutes)

server.get('/api/config/paypal', (req, res) =>
  res.send(process.env.PAYPAL_CLIENT_ID)
)

const __dirname = path.resolve()
server.use('/uploads', express.static(path.join(__dirname, '/uploads')))

applicationCache.server.use(notFound)
server.use(errorHandler)

//Listen
const PORT = process.env.PORT || 8080
server.listen(
  PORT,
  console.log(`Server running in ${process.env.NODE_ENV} port ${PORT}`)
)

哪位大神帮忙谢谢!

如果您删除以下行,您的问题就解决了:

const __dirname = path.resolve()

__dirname 已经在 global 命名空间中声明。

您可以在 documentation

中查看更多信息

Server.js就在这里

App/backend/server.js

您可能正在寻找这样的东西

App/upload

如果你使用__dirname你得到

App/backend/upload

__dirname 在节点脚本中 returns 当前 JavaScript 文件所在文件夹的路径。

如果我们将 __dirname 重命名为 __variableOfChoice。我们得到

    const __variableOfChoice = path.resolve()
    server.use('/uploads', express.static(path.join(__variableOfChoice , 
    '/uploads')))

App/upload

I was running This command from ./App "start": "node backend/server",

在节点版本 v12.17.0 上测试 Here How I did it