我正在做一个项目,我想使用yahooFinance的darta。我找到了这个项目https://www.npmjs.com/package/yahoo-finance。我还使用了基本的sapper模板。
基本上,我尝试的是从YF检索数据并在FE上显示它们。
我给出了这段代码:
<script>
import yahooFinance from 'yahoo-finance';
let response;
async function searchStock (){
yahooFinance.historical({
symbol: 'AAPL',
from: '2020-01-01',
to: '2020-12-31',
}, function (err, quotes) {
console.log(quotes)
});
}
</script>但每次尝试编译时都会得到:意外的标记(请注意,需要@rollup/plugin-json导入JSON文件) 1:{ 2:“版本”:"2020d",^ 3:“区域”:[ 4:“非洲/阿比让|LMT GMT|g.8 0|01|-2ldXH.Q|48e5",
所以我试着用var yahooFinance = require('yahoo-finance');的方式导入
但随后我没有捕获到(在promise中) ReferenceError:在控制台中没有定义require。
发布于 2021-01-12 05:51:56
您将无法在前端使用yahoo-finance包,因为它使用Node。由于您使用的是Sapper,因此您可以在server route中使用该包并从客户端获取它。
创建文件yahoo.json.js并将其放置在src/routes中。然后复制并粘贴以下内容到其中。这将从yahoo-finance调用historical方法,并以JSON形式返回结果。
import yahooFinance from 'yahoo-finance';
export async function get(req, res, next) {
const response = await new Promise((resolve, reject) => {
yahooFinance.historical({
symbol: 'AAPL',
from: '2020-01-01',
to: '2020-12-31',
}, function (err, quotes) {
if (err) reject(err);
resolve(quotes);
});
})
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(response));
}然后,您可以从Svelte组件中调用此服务器路由。它使用Sapper preload method在页面呈现之前获取数据。
<script context="module">
export async function preload() {
const res = await this.fetch('/yahoo.json');
const data = await res.json();
return {data};
}
</script>
<script>
export let data;
</script>
{JSON.stringify(data)}您可能希望增强服务器路由,以添加请求参数和更好的错误处理,但这将向您展示如何使其工作。
https://stackoverflow.com/questions/65673838
复制相似问题