π Bug Report: NextJS middleware issues
xtheonexuk opened this issue Β· comments
π Reproduction steps
When I try to use appwrite in NextJS middleware I get the following error...
[Error: adapter is not a function] {
code: undefined,
type: undefined,
response: undefined
}
My middleware.js file is as per the example on https://appwrite.io/docs/getting-started-for-server with my own server variables of course...
import { Client, Users, ID } from 'node-appwrite'
export function middleware() {
const client = new Client()
client.setEndpoint('https://appwrite.jadeyo.dev/v1').setProject('633***').setKey('0ac***')
const users = new Users(client)
let promise = users.create(ID.unique(), 'email@example.com', null, 'password')
promise.then(
function (response) {
console.log(response)
},
function (error) {
console.log(error)
}
)
}
My appwrite server is v:1.0.3.501 hosted on digital ocean using the built in docker image - not customised in any way.
My local machine is Linux running node v18.11.0
My package.json is as follows...
{
"name": "support.jadeyo.xyz",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"appwrite": "^10.1.0",
"next": "12.3.1",
"node-appwrite": "^8.1.0",
"react": "18.2.0",
"react-dom": "18.2.0"
},
"devDependencies": {
"@fortawesome/fontawesome-pro": "^6.2.0",
"@fortawesome/fontawesome-svg-core": "^6.2.0",
"@fortawesome/pro-duotone-svg-icons": "^6.2.0",
"@fortawesome/pro-light-svg-icons": "^6.2.0",
"@fortawesome/pro-regular-svg-icons": "^6.2.0",
"@fortawesome/pro-solid-svg-icons": "^6.2.0",
"@fortawesome/react-fontawesome": "^0.2.0",
"autoprefixer": "^10.4.12",
"eslint": "8.25.0",
"eslint-config-next": "12.3.1",
"postcss": "^8.4.18",
"tailwindcss": "^3.2.0"
}
}
π Expected behavior
Account creation
π Actual Behavior
User account not created and error thrown
π² Appwrite version
Version 0.10.x
π» Operating system
Linux
𧱠Your Environment
No response
π Have you spent some time to check if this issue has been raised before?
- I checked and didn't find similar issue
π’ Have you read the Code of Conduct?
- I have read the Code of Conduct
@xtheonexuk, sorry, there's not much for us to go on from this. You'll need to share more of your code for additional help.
Hi Steven
There is no more code - that is all!
It's a fresh nextjs project with only a middleware.js file in the root dir #facepalm
@xtheonexuk it seems like this might be a problem with NextJS middlewares and axios. I don't think there's a quick fix for getting the node SDK to work in a NextJS middleware, but can you expand further on what you need to do (I'm assuming your middleware was just a test and you don't actually need to create a user in every request to your app).
@stnguyen90 I've had similar issue with Nuxt on Cloudflare Pages. That's because axios doesn't work on Edge/Workers. A work around is to use node fetch
directly and it worked fine.
A future solution would be to migrate to https://github.com/unjs/ofetch is very tiny and framework agnostic like axios. If you guys are open I can give you a hand implementing ofetch
.
In 1.5, you should be able to use https://github.com/appwrite/sdk-for-node/releases/tag/12.1.0-rc.4 in a NextJS middleware.