1

I know this question has been asked multiple times but not a single answer has worked for me so far. The problem is whenever I try to send a post request to my NodeJS server from my flutter frontend I get an XMLHttpRequest error.

Note: I am running flutter as a web app on localhost:50259 and the node server on localhost:3000

Here is the dart code for the post request:

Future<void> addPlayer(Player player) async {
  final Uri url = Uri.parse('$baseUrl/addplayer'); // baseUrl = http://localhost:3000

  final Map<String, String> headers = {
    'Content-Type': 'application/json'
  };

  final body = jsonEncode({
    'playerID': player.playerID,
    'username': player.userName,
    'password': player.password
  });

  final response = await http.post(url, headers: headers, body: body);
}

Here is the NodeJS server code that should receive the request: It actually executes but is blocked somehow because the body is undefined.

app.post('/addplayer', async (req, res) => {
  console.log(req.body) // Logs undefined
  const { playerID, username, password } = req.body // Crashes
  const query = {
    text: 'INSERT INTO game_schema."Players" ("playerID", "username", "password"',
    values: [playerID, username, password]
  }

  try {
    await pool.query(query);
    res.status(200).send('Player added successfully');
  } catch (error) {
    console.error(error);
    res.status(500).send('Error adding player');
  }
});

Here is the error from the dart console:

Error: XMLHttpRequest error.
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 299:10  createErrorWithStack
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 355:28            _throw
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/core/errors.dart 120:5                                           throwWithStackTrace
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1385:11                                          callback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 40:11                              _microtaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 49:5                               _startMicrotaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15           <fn>

Here are the errors I get from the chrome console:

GET http://localhost:3000/addplayer net::ERR_CONNECTION_RESET

POST http://localhost:3000/addplayer net::ERR_CONNECTION_RESET

Uncaught (in promise) Error: XMLHttpRequest error.
    C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 977:28                get current
packages/http/src/browser_client.dart 81:22                                                                                    <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1660:54                                              runUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 147:18                                        handleValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 767:44                                        handleValueCallback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 796:13                                        _propagateToListeners
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 558:7                                         [_complete]
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/stream_pipe.dart 61:11                                         _cancelAndValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/stream.dart 1587:7                                             <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 367:37  _checkAndCall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 372:39  dcall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 37367:58                              <fn>


    at Object.createErrorWithStack (errors.dart:299:10)
    at Error._throw (core_patch.dart:355:28)
    at Error.throwWithStackTrace (errors.dart:120:5)
    at async._AsyncCallbackEntry.new.callback (zone.dart:1385:11)
    at Object._microtaskLoop (schedule_microtask.dart:40:11)
    at _startMicrotaskLoop (schedule_microtask.dart:49:5)
    at async_patch.dart:166:15

What I have tried so far:

  1. This answer Deleting flutter_tools.stamp, then editing chrome.dart --disable-extensions to --disable-web-security.
  2. Adding "Access-Control-Allow-Origin": "*" to the request header.
  3. Adding:
const cors = require('cors')
app.use(cors())
  1. Installing Cors unblock extension.

Nothing seems to be working.

Ahmed
  • 43
  • 7

0 Answers0