对 Express JS 目录错误的非法操作
Illegal operation on a directory error on Express JS
我正在使用 node js 构建一个小型图片上传应用程序。我已经导入了适当的包,具有 运行 必须的方法。图像被检索为多部分形式的数据。但是在 mv() 函数中我收到以下错误。
node:internal/process/promises:246
triggerUncaughtException(err, true /* fromPromise */);
^
[Error: EISDIR: illegal operation on a directory, open 'E:\Workspace\clean_blog_10\public\img'] {
errno: -4068,
code: 'EISDIR',
syscall: 'open',
path: 'E:\Workspace\clean_blog_10\public\img'
我已导入 'express-fileupload'、'path' 并正确调用了这些方法。问题是由提到的最后一个请求处理程序引起的。
const express = require('express');
const path = require('path');
const ejs = require('ejs');
const mongoose = require('mongoose'); //importing mongoose
const BlogPost = require('./models/BlogPost');
const fileUpload = require('express-fileupload');
const {resourceUsage} = require('process');
mongoose.connect('mongodb://localhost/my_database', { useNewUrlParser: true }) //Defining a connection
const app = new express();
app.set('view engine', 'ejs')
app.use(express.static('public'));
app.use(express.json());
app.use(express.urlencoded());
app.use(fileUpload());
app.listen(4000, () => {
console.log('App listening on port 4000');
});
app.get('/', async (req, res) => {
const blogposts = await BlogPost.find({})
//console.log(blogposts)
res.render('index', {
blogposts: blogposts
});
});
app.get('/posts/new', (req, res) => {
res.render('createPost');
});
/*The below request handler is having an issue*/
app.post('/posts/store', async (req, res) => {
let image = req.files.image
image.mv(path.resolve(__dirname, 'public/img'), image.name,
async (error) => {
await BlogPost.create(req.body)
res.redirect('/')
})
});
我的 EJS 文件有一个以正确方式检索多媒体表单数据的表单,我已经验证。我有一个名为 'img' 的预先存在的文件夹。我不知道问题出在哪里。
谁能帮帮我?
抱歉,这是一个打字错误..!
我没有在正确的地方关闭 path.resolve() 括号。该方法有三个参数,但我在第二个参数处关闭了!
我正在使用 node js 构建一个小型图片上传应用程序。我已经导入了适当的包,具有 运行 必须的方法。图像被检索为多部分形式的数据。但是在 mv() 函数中我收到以下错误。
node:internal/process/promises:246
triggerUncaughtException(err, true /* fromPromise */);
^
[Error: EISDIR: illegal operation on a directory, open 'E:\Workspace\clean_blog_10\public\img'] {
errno: -4068,
code: 'EISDIR',
syscall: 'open',
path: 'E:\Workspace\clean_blog_10\public\img'
我已导入 'express-fileupload'、'path' 并正确调用了这些方法。问题是由提到的最后一个请求处理程序引起的。
const express = require('express');
const path = require('path');
const ejs = require('ejs');
const mongoose = require('mongoose'); //importing mongoose
const BlogPost = require('./models/BlogPost');
const fileUpload = require('express-fileupload');
const {resourceUsage} = require('process');
mongoose.connect('mongodb://localhost/my_database', { useNewUrlParser: true }) //Defining a connection
const app = new express();
app.set('view engine', 'ejs')
app.use(express.static('public'));
app.use(express.json());
app.use(express.urlencoded());
app.use(fileUpload());
app.listen(4000, () => {
console.log('App listening on port 4000');
});
app.get('/', async (req, res) => {
const blogposts = await BlogPost.find({})
//console.log(blogposts)
res.render('index', {
blogposts: blogposts
});
});
app.get('/posts/new', (req, res) => {
res.render('createPost');
});
/*The below request handler is having an issue*/
app.post('/posts/store', async (req, res) => {
let image = req.files.image
image.mv(path.resolve(__dirname, 'public/img'), image.name,
async (error) => {
await BlogPost.create(req.body)
res.redirect('/')
})
});
我的 EJS 文件有一个以正确方式检索多媒体表单数据的表单,我已经验证。我有一个名为 'img' 的预先存在的文件夹。我不知道问题出在哪里。
谁能帮帮我?
抱歉,这是一个打字错误..! 我没有在正确的地方关闭 path.resolve() 括号。该方法有三个参数,但我在第二个参数处关闭了!