Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类型错误:upload.single不是一个函数_Javascript_Node.js_Express_Multer - Fatal编程技术网

Javascript 类型错误:upload.single不是一个函数

Javascript 类型错误:upload.single不是一个函数,javascript,node.js,express,multer,Javascript,Node.js,Express,Multer,我曾使用multer在node.js中上载文件,但在设置服务器时出现了此错误。 TypeError:upload.single不是一个函数 这是我的server.js const express=require('express'); const cors=require('cors'); const mongoose=require('mongoose'); const path = require('path'); const router = require('express').Rout

我曾使用multer在node.js中上载文件,但在设置服务器时出现了此错误。 TypeError:upload.single不是一个函数

这是我的server.js

const express=require('express');
const cors=require('cors');
const mongoose=require('mongoose');
const path = require('path');
const router = require('express').Router();
const multer = require('multer');
const upload = multer({dest:'images/'});


require('dotenv').config();

const app= express();
const port=process.env.PORT || 5000;

app.use(cors());
app.use(express.json());


//open connection to the database using Connection String used as an environment Variable
const uri = process.env.STORE_URI;
mongoose.connect(uri,{useNewUrlParser:true,useCreateIndex:true});


const connection=mongoose.connection;
connection.once('open',()=>{
console.log("MongoDB for Store connected successfully");
})
//

//Using the Routes for the Project in the Server
const productsRouter = require('./routes/Products.route');


app.use('/api/products',productsRouter);


if(process.env.NODE_ENV === 'production'){
app.use(express.static('client/build'));

  app.get('*', (req,res)=>{
    res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
  })
}

app.listen(port,()=>{
 console.log(`Server is runnig on port: ${port}`);
})

module.exports = upload;
这是我在服务器中使用的productsRoute.js

const router = require('express').Router();
let Product = require('../models/product.model');
let upload = require('../server')

router.route('/add').post(upload.single('productImage'),(req,res)=>{

console.log(req.file);

const productname = req.body.productname;
const description = req.body.description;
const gender = req.body.gender;
const category = req.body.category;
const size = req.body.size;
const price = Number(req.body.price);
const quantity = Number(req.body.quantity);

const newProduct = new Product({
    productname,
    description,
    gender,
    category,
    size,
    price,
    quantity

})

newProduct.save()
    .then(()=>res.json("Product Added!"))
    .catch(err=>res.status(400).json('Err:'+err))
})

有人能告诉我我在哪里犯了这个错误以及这个问题的解决方法吗。提前感谢

我测试你的代码,你应该添加这行代码:
module.exports=upload
before
const productsRouter=require('./productsRoute')
和add
module.exports=路由器至productsRoute.js:

const router = require('express').Router();
//let Product = require('../models/product.model');
let upload = require('./index')
//const express = require('express');
//const router = new express.Router();

router.route('/add').post(upload.single('productImage'),(req,res)=>{


//router.post("/add", upload.single('productImage'),(req,res)=>{ 

console.log(req.file);

const productname = req.body.productname;
const description = req.body.description;
const gender = req.body.gender;
const category = req.body.category;
const size = req.body.size;
const price = Number(req.body.price);
const quantity = Number(req.body.quantity);

const newProduct = new Product({
    productname,
    description,
    gender,
    category,
    size,
    price,
    quantity

})

});

module.exports = router;
server.js:

const express=require('express');
const cors=require('cors');
const path = require('path');
const router = require('express').Router();
const multer = require('multer');
const upload = multer({dest:'images/'});


//require('dotenv').config();

const app= express();
const port=process.env.PORT || 5000;

app.use(cors());
app.use(express.json());

/*change this line*/
module.exports = upload;


//Using the Routes for the Project in the Server
const productsRouter = require('./productsRoute');


app.use('/api/products', productsRouter);

app.listen(port,()=>{
 console.log(`Server is runnig on port: ${port}`);
})
productsRoute.js:

const router = require('express').Router();
//let Product = require('../models/product.model');
let upload = require('./index')
//const express = require('express');
//const router = new express.Router();

router.route('/add').post(upload.single('productImage'),(req,res)=>{


//router.post("/add", upload.single('productImage'),(req,res)=>{ 

console.log(req.file);

const productname = req.body.productname;
const description = req.body.description;
const gender = req.body.gender;
const category = req.body.category;
const size = req.body.size;
const price = Number(req.body.price);
const quantity = Number(req.body.quantity);

const newProduct = new Product({
    productname,
    description,
    gender,
    category,
    size,
    price,
    quantity

})

});

module.exports = router;

在productsRoute.js上编辑您的代码:const router=require('express'),然后const router=new express.router();然后是router.post(“/add”,upload.single('productImage'),(req,res)=>{console.log(req.file);});//也许为你工作you@taherfattahi你的解决方案没有变化。我也有同样的问题