当前位置: 首页 > 知识库问答 >
问题:

使用fs时出现异常错误。在快车中取消链接。js简单应用程序?

常雪风
2023-03-14

js.我正在express.js.创建一个简单的博客,我使用Typicode/lowdb作为数据库,根据data.json文件上的id创建/更新/删除帖子。使用json数组中的段塞数据使用Node.js文件系统API创建/更新/删除标记帖子。在标记帖子的删除端,我得到一个我不明白的错误。

  { [Error: ENOENT, unlink 'C:\Users\path\to\publicfolder\undefined.md']
  errno: -4058,
  code: 'ENOENT',
  path: 'C:\\Users\\path\\to\\publicfolder\\undefined.md' }

我使用这样的fs.unlink来删除降价帖子:

   var oldSlug = "public/"+req.params.slug+".md";   

fs.unlink(oldSlug, function(err) {
    if(err) {
      console.log(err);
    } else {
      console.log("Deleted the old markdown file: " + oldSlug +"");
    }
  });

以下是部分公开的代码示例:

创建/更新/删除帖子的示例-帖子。js

       exports.index = function (req, res) {
        res.render('post/index', { posts: db.list()});
    }; 

    exports.form = function (req, res) {
            res.render('post/form');
        };

        exports.edit = function (req, res) {
        var post = db.getById(req.params.id);
        res.render('post/edit', {post: post})
        }

       exports.update = function (req, res) {

        var slugTitle = slug(req.body.name).toLowerCase().split('.').join("");

        var description = req.body.desc;

    db.update({id: req.body.id, name: req.body.name, desc: req.body.desc,
    slug: slugTitle});

//using this to rename and update markdown posts it work's

        var oldPath = "public/"+req.body.slug+".md";
         var newPath = "public/"+slugTitle+".md"; 

         fs.unlink(oldPath, function(err) {
            if(err) {
              console.log(err);
            } else {
              console.log("Deleted the old markdown file : oldPath ");
            }
          }); 
        fs.writeFile(newPath, description, function(err) {
                    if(err) {
                      console.log(err);
                    } else {
                      console.log("The post was updated as: newPath ");
                    }
                  }); 
        res.redirect('/post');};

        exports.remove = function (req, res) {
            db.remove(req.params.id);

//using this to delete markdown posts i get the error
//changing req.params.slug to req.body.slug still gives the error 

          var oldSlug = "public/"+req.params.slug+".md"; 
            fs.unlink(oldSlug, function(err) {
            if(err) {
              console.log(err);
            } else {
              console.log("Deleted the markdown file: " + oldSlug +"");
            }
          });
        res.redirect('/post');};

服务器上的示例。js

app.get('/post', post.index);
app.get('/post/create', post.form);
app.post('/post/create', post.save);
app.get('/post/details/:id', post.details);
app.get('/post/edit/:id', post.edit);
app.post('/post/update', post.update);
app.get('/post/delete/:id', post.remove);
 http.createServer(app).listen(app.get('port'), function(){
    console.log("Express server listening on port " + app.get('port'));
 });

index.jade的例子

doctype
html
    head
        title
    body
        h1 Posts
        ul
        each item in posts
            li Item #{item.name} - #{item.desc} - #{item.slug} 
                a(href='/post/details/#{item.id}') Details -
                a(href='/post/edit/#{item.id}') Edit -
                a(href='/post/delete/#{item.id}') Delete
        div
            p
                a(href='post/create') Add new

问题出在出口上。删除post中的函数。但是为什么呢??我相信我正在识别要删除的标记文件,该文件对应于数据库中文档中的Slug参数,是否?我希望我的代码是有意义的。

共有1个答案

贺卜霸
2023-03-14

问题是您没有将变量slg传递到删除路由的任何地方。由于您使用GET,它不能来自req.body,因此您必须在URL路径中或作为查询字符串传递它。

尝试更改以下行:

post。js

var oldSlug = "public/"+req.query.slug+".md";

index.jade

a(href='/post/delete/#{item.id}?slug=#{item.slug}') Delete

 类似资料:
  • 我正在尝试将OpenGL与Qt一起使用。我正在遵循这个示例:http://qt-project.org/doc/qt-5.0/qtgui/openglwindow.html使用Qt 5 build for msvc2012。最后我得到了以下错误: 错误LNK2019:未解析的外部符号_imp_glClear@4在函数“public:virtual void _uthiscall OpenGLWin

  • 我目前有以下情况: 我想让我的应用程序监听用户输入。首先,我使用了一个看不见的文本字段,但这搞砸了我的设计,我认为它不够复杂。因此,我现在尝试在我的上部流程窗格上创建一个onKeyPressed事件处理程序,如下所示: 这仅适用于纯文本和数字。但是,一旦我按Enter键,我就会收到以下错误: 我已经想到了: 上面的FlowPane没有焦点,但我给了它焦点,但没有结果。 回车键没有被识别,这可能是真

  • 我在创建一个返回“hello”字符串的简单web服务时遇到了以下错误 白标签错误页此应用程序没有/Error的显式映射,因此您将其视为回退。 我的Web服务终结点: 我的配置类: 我的依赖关系: 我的项目结构:

  • 我在Openshift中的node.js single gear不可扩展应用程序中使用NodeEmailer模块时遇到了一些问题。正如文档所建议的,我初始化了transporter对象并使用了sendMail函数。我的代码的简化版本是 当我在本地机器上运行这段代码时,它可以正常工作,但是当我试图在服务器上执行它时,我得到了一个错误,好像应用程序无法连接到smtp服务器。 我试图增加超时连接参数,但

  • 我对表达和node.js有点陌生,我不知道app.use和app.get.之间的区别。似乎你可以用它们来发送信息。例如: 似乎与此相同:

  • 我正在尝试使用intelliJ IDEA创建我的第一个JavaFX程序 我得到这个错误: 这是我的FXML文件: main.java: 这是项目结构: 项目结构 我甚至更改了fxml文件的位置,但他不断得到相同的错误。 FXML文件和Main.java在同一个包中 我是Ubuntu