Hello,
I'm calling a dart function from a web browser but I can't send a response back, I have this error:
TypeScript
NoSuchMethodError: Class 'RuntimeResponse' has no instance method 'json'.
Receiver: Instance of 'RuntimeResponse'
Tried calling: json(_Map len:0, headers: _ConstMap len:3)
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:38)
#1 _objectNoSuchMethod (dart:core-patch/object_patch.dart:85)
#2 main (package:starter_template/main.dart:24)
#3 action.<anonymous closure> (file:///usr/local/server/src/server.dart:116)
#4 _rootRun (dart:async/zone.dart:1399)
#5 _CustomZone.run (dart:async/zone.dart:1301)
#6 _runZoned (dart:async/zone.dart:1804)
#7 runZoned (dart:async/zone.dart:1747)
#8 action (file:///usr/local/server/src/server.dart:111)
<asynchronous suspension>
#9 main.<anonymous closure> (file:///usr/local/server/src/server.dart:185)
<asynchronous suspension>
#10 handleRequest (package:shelf/shelf_io.dart:138)
<asynchronous suspension>
The query seems to be a json type (cf picture) as mentioned on https://appwrite.io/docs/products/functions/develop#response-types
My function is this:
TypeScript
const corsHeaders = {
'Access-Control-Allow-Origin': 'berthou.github.io',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
};
Future<dynamic> main(final context) async {
...
if (context.req.method == 'OPTIONS') {
return context.res.json(// --------------- EXCEPTION HERE ----------
{},
headers: corsHeaders,
);
}
final request = {
'api_key': octopusApiKey,
'email_address': emailaddress,
};
final response = await http.post(...);
if (response.statusCode == 200) {
return context.res.json(
{},
headers: corsHeaders,
);
} else {
return context.res.json(
{},
headers: corsHeaders,
);
}
}
What am I missing?
TL;DR
Developers are encountering a NoSuchMethodError when trying to use the 'json' method in a response in their Dart function. The error occurs because 'json' method does not exist for 'RuntimeResponse'. To resolve this, they should return a response in JSON format using the 'jsonEncode()' method from the 'dart:convert' package:
```dart
import 'dart:convert';
...
if (context.req.method == 'OPTIONS') {
return context.res
..headers.addAll(corsHeaders)
..write(jsonEncode({}));
}
final request = {
'api_key': octopusApiKey,
'email_address': emailaddress,
Recommended threads
- No server error on selfhosted appwrite
Please help me, my clients is ask what happen on their data? How can i make it up again?
- Worker functions stuck on "Fetched 0 fun...
Appwrite Version: 1.9.0 Bug Description: The appwrite-worker-functions container gets stuck in an infinite loop logging "Fetched 0 functions..." while scheduled...
- Upgrading selfhost version?
It is okay to upgrade version to higher one, of my current version is 1.7.4 to 1.8.1. Is that safe to do cause my clients already have data on that? Also is a...