sveltejs / sapper

The next small thing in web development, powered by Svelte
https://sapper.svelte.dev
MIT License
7k stars 434 forks source link

Setup sapper with express #822

Closed mylastore closed 5 years ago

mylastore commented 5 years ago

I want to setup express instead of polk and have the setup below but get an error when I run npm run dev.

express() // You can also use Express
    .use(
        compression({ threshold: 0 }),
        sirv('static', { dev }),
        authenticationMiddleware(),
        sapper.middleware({
            session: (req, res) => ({
                user: req.user
            })
        })
    )
    .listen(PORT, err => {
        if (err) console.log('error', err);
    });
TypeError: Router.use() requires a middleware function but got a Promise
    at Function.use (/storage/utils/sapper/node_modules/express/lib/router/index.js:458:13)
    at Function.<anonymous> (/storage/utils/sapper/node_modules/express/lib/application.js:220:21)
    at Array.forEach (<anonymous>)
    at Function.use (/storage/utils/sapper/node_modules/express/lib/application.js:217:7)
    at eval (webpack:///./src/server.js?:28:6)
    at Module../src/server.js (/storage/utils/sapper/__sapper__/dev/server/server.js:302:1)
    at __webpack_require__ (/storage/utils/sapper/__sapper__/dev/server/server.js:21:30)
    at /storage/utils/sapper/__sapper__/dev/server/server.js:85:18
    at Object.<anonymous> (/storage/utils/sapper/__sapper__/dev/server/server.js:88:10)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
Conduitry commented 5 years ago

I can't reproduce this with the default Rollup or webpack Sapper templates by replacing polka@next with express@latest. Please ask support questions on Stack Overflow or in our Discord chatroom. Accompany bug reports with a reproduction of the issue.

peturh commented 4 years ago

You're probably importing it wrong.

import express from 'express';

express().use(...)
David00154 commented 3 years ago

You actually need to use a common js require syntax like thos: const express = require('express');

so your code should like this:

const express = require('express ')

const app = express();

app.use(compression({ threshold: 0 })); app.use(sirv('static', { dev })); app.use(sapper.middleware());

app.listen(PORT, (err) => { if(err) console.log(err) })