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

使用fs写入文本文件后停止执行。写文件

姜智渊
2023-03-14

我有以下节点。JS(使用Express运行)代码:

let app = express();

app.use(cors());

app.get('/callback', function (req, res) {

    // your application requests refresh and access tokens
    // after checking the state parameter

    var code = req.query.code || null;

    var authOptions = {
        url: 'https://accounts.spotify.com/api/token',
        form: {
            code: code,
            redirect_uri: redirectUri,
            grant_type: 'authorization_code'
        },
        headers: {
            'Authorization': 'Basic ' + (new Buffer(clientId + ':' + clientSecret).toString('base64'))
        },
        json: true
    };

    request.post(authOptions, function (error, response, body) {
            if (!error && response.statusCode === 200) {

                var access_token = body.access_token,
                    refresh_token = body.refresh_token;

                fs.writeFile('test.txt', 'HELLO', function (err) {
                    if (err) return console.log(err);
                    console.log('Hello World > helloworld.txt');
                });
            }
        }
    )
});

console.log('Listening on 8888');
app.listen(8888);

该路由用作对Spotify Web API的请求的回调,因此我可以获得访问令牌。

Spotify然后重定向到上面的回调函数,您可以通过查看“redirect_URI”在URI中看到它。

如果需要有关Spotify授权流的更多信息,请参见此处。

这是我用来向Spotify验证我的应用程序的URI。

https://accounts.spotify.com/authorize?client_id=CLIENT_ID

CLIENT_ID被我真正的CLIENT_ID所取代

我的问题位于文件写入部分:

fs.writeFile('test.txt', 'HELLO', function (err) {
    if (err) return console.log(err);
    console.log('Hello World > helloworld.txt');
});

当Spotify调用回调路由时,我在文本文件中写入了字符串“HELLO”,因此文件写入是功能性的。

但即使它已经完成了字符串的编写,Chrome页面仍在运行,并且在服务器上处于“挂起”状态。它运行了几分钟,然后崩溃了,因为页面没有发送任何数据。为什么?

我看了这一页,讨论了使用writeFile和writeFileAsync写入文本文件的方法,但使用这两种方法并没有解决我的问题。

编辑:我真的不想停止快递过程!我只是想能够处理另一个请求:)

任何想法?提前感谢:)

共有2个答案

方弘
2023-03-14

在get路径中,您没有发送响应,无论是否成功写入文件,都必须发送响应。

将下面的代码后期写入文件(以及在if错误情况下)

res.send({您的选择\响应\数据})

暨正真
2023-03-14

您没有从路由返回任何内容,请尝试添加res.send({})

 类似资料:
  • 问题内容: 我想知道如何将以下代码转换为将这些行输出到文本文件,而不是标准输出: 该属性文件是: 谢谢。 问题答案: 将ConsoleAppender更改为FileAppender。 我发现 有用。如果使用此选项,则必须为fileName添加一个属性,并且可能还要设置maxFileSize。这是一个示例(将它们放在log4j.properties文件中): 还有其他附加程序。 根据时间滚动。 不滚

  • 问题内容: 输出文件包含: 问题出在哪里?如何使用写入文本文件? 问题答案: 你必须写String … 你可以试试。 要么 要么

  • 我正在尝试使用writefile,但由于某种原因,它在./events文件夹之外使用。 我尝试使用fs, xp.js试图在同一个文件夹中写入level.json。

  • 问题内容: 因此,我正在使用 BufferedWriter, 并希望将一些文本写入文本文件。 由于某种原因,正在创建文本文档,但是没有写入任何文本,这是为什么呢? 问题答案: 您需要关闭或使用

  • 问题内容: 我正在从Google文档中提取数据,进行处理,然后将其写入文件(最终我将其粘贴到Wordpress页面中)。 它具有一些非ASCII符号。如何将这些安全地转换为可以在HTML源代码中使用的符号? 目前,我正在将所有内容都转换为,将它们全部合并为Python字符串,然后执行以下操作: 最后一行存在编码错误: 编解码器无法解码位置12286的字节:序数不在范围内(128) 部分解决方案:

  • 问题内容: 我正在运行测试,发现直到我按住C键终止程序后,该文件才真正被写入。谁能解释为什么会这样? 我希望它可以同时写入,因此可以在过程中间读取文件。 问题答案: 写到磁盘的速度很慢,因此许多程序将写操作存储到大块中,然后一次写一次。这称为 缓冲 ,当您打开文件时,Python会自动进行 缓冲 。 写入文件时,实际上是在写入内存中的“缓冲区”。填满后,Python会自动将其写入磁盘。您可以通过以