我编写了一个普通的html应用程序来测试一个Netlify函数,它可以工作。
我试图编写一个Svelte应用程序来模仿相同的功能。
这两个版本的目录结构基本相同,但将App.svelte替换为index.html。
在Svelte版本中,当我尝试访问hello.js时,我会得到一个404错误。我假设我没有给出函数的正确路径,但它应该是什么呢?
.
├── 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我已经在基本目录中运行了以下脚本
npm install netlify-cli netlify-lambda和
netlify linkpackage.json
{
"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
[dev]
publish = "src"App.svelte
<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
exports.handler = async (event, context) => {
return {
statusCode: 200,
body: JSON.stringify('Hola Mundo')
}
}发布于 2022-05-17 15:05:08
我的package.json中的sirv-cli版本似乎有问题,它使Netlify服务器正确启动。
它应该是
"dependencies": {
...
"sirv-cli": "^1.0.11"
}https://stackoverflow.com/questions/72203897
复制相似问题