首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Svelte实现Netlify功能?

如何使用Svelte实现Netlify功能?
EN

Stack Overflow用户
提问于 2022-05-11 15:39:29
回答 1查看 60关注 0票数 0

我编写了一个普通的html应用程序来测试一个Netlify函数,它可以工作。

我试图编写一个Svelte应用程序来模仿相同的功能。

这两个版本的目录结构基本相同,但将App.svelte替换为index.html。

在Svelte版本中,当我尝试访问hello.js时,我会得到一个404错误。我假设我没有给出函数的正确路径,但它应该是什么呢?

代码语言:javascript
复制
.
├── netlify
│   └── functions
│       └── hello.js
├── netlify.toml
├── package.json
├── package-lock.json
├── public
│   ├── build
│   │   ├── bundle.css
│   │   ├── bundle.js
│   │   └── bundle.js.map
│   ├── favicon.png
│   ├── global.css
│   └── index.html
├── README.md
├── rollup.config.js
├── scripts
│   └── setupTypeScript.js
└── src
    ├── App.svelte
    └── main.js

我已经在基本目录中运行了以下脚本

代码语言:javascript
复制
npm install netlify-cli netlify-lambda

代码语言:javascript
复制
netlify link

package.json

代码语言:javascript
复制
{
"name": "svelte-app",
"version": "1.0.0",
"private": true,
"scripts": {
    "build": "rollup -c",
    "dev": "rollup -c -w",
    "start": "sirv public --no-clear"
},
"devDependencies": {
    "@rollup/plugin-commonjs": "^17.0.0",
    "@rollup/plugin-node-resolve": "^11.0.0",
    "rollup": "^2.3.4",
    "rollup-plugin-css-only": "^3.1.0",
    "rollup-plugin-livereload": "^2.0.0",
    "rollup-plugin-svelte": "^7.0.0",
    "rollup-plugin-terser": "^7.0.0",
    "svelte": "^3.0.0"
},
"dependencies": {
    "netlify-cli": "^10.3.0",
    "netlify-lambda": "^2.0.15",
    "sirv-cli": "^2.0.0"
}
}

netlify.toml

代码语言:javascript
复制
[dev]
publish = "src"

App.svelte

代码语言:javascript
复制
<main>
    <h1>Netlify/Svelte</h1>

    <p>function result: <span id="function-result"></span></p>
</main>

<script>
    async function callHello() {
        const url = `/.netlify/functions/hello`;

        try {
            const response = await fetch(url);
            const data = await response.json();

            console.log('Data returned by function:', data)
            let display = document.getElementById('function-result')
            display.innerText = data
            return data;
        } catch (err) {
            console.log(err);
        }
    }
    callHello()
</script>

netlify/functions/hello.js

代码语言:javascript
复制
exports.handler = async (event, context) => {
    return {
        statusCode: 200,
        body: JSON.stringify('Hola Mundo')
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-17 15:05:08

我的package.json中的sirv-cli版本似乎有问题,它使Netlify服务器正确启动。

它应该是

代码语言:javascript
复制
"dependencies": {
    ...
    "sirv-cli": "^1.0.11"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72203897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档