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
- Function deployment failed: Unable to re...
Hi Appwrite team, I have been experiencing persistent errors when i attempt to push my appwrite functions. The logs on the deployment detail page on the console...
- One to many 2 way, console UI not correc...
Hey, seems I'm facing the exactly same issue with this one: https://github.com/appwrite/appwrite/issues/6016 Since this Github issue stay open for so long, let ...
- Server Down
Appwrite services are down. When will they start working again?