我有一个文件“artists.csv”,我需要在执行服务器端代码时读取它(具体来说,当发出 API 请求时)。
new Promise((resolve, reject) => {
fs.createReadStream(artistsFilePath)
...
});
我假设静态文件夹是放置此类文件的正确位置。所以现在我需要静态文件夹中文件的路径。在 html 中%sveltekit.assets%/favicon.png
使用前端,但这在我的情况下不起作用。我发现让它在开发和生产中工作的唯一方法是以下意大利面条:
const __dirname = dirname(fileURLToPath(import.meta.url));
let artistsFilePath = __dirname + '/../../../../../client/artists.csv';
if (!fs.existsSync(artistsFilePath)) {
// Development mode
artistsFilePath = __dirname + '/../../static/artists.csv';
}
肯定有更好的方法来做到这一点?
导入文件。
使用
?raw
将文件作为字符串导入。static
应该只用于需要固定路径的东西,比如图标、robots.txt
等。其他一切都应该通过导入来完成,这也确保了如果浏览器访问资产,资产可以被正确缓存(将资产作为 URL 导入时,将向路径添加哈希值)。