Javascript Yahoo财务模块与sapper
我正在做一个项目,我想使用yahooFinance的darta。 我找到了这个项目。 我还使用了基本的sapper模板 基本上,我尝试的是从YF检索数据,并在FE上显示它们 我给出了这段代码:Javascript Yahoo财务模块与sapper,javascript,node.js,svelte,sapper,Javascript,Node.js,Svelte,Sapper,我正在做一个项目,我想使用yahooFinance的darta。 我找到了这个项目。 我还使用了基本的sapper模板 基本上,我尝试的是从YF检索数据,并在FE上显示它们 我给出了这段代码: <script> import yahooFinance from 'yahoo-finance'; let response; async function searchStock (){ yahooFinance.historical({ symbol: '
<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>
从“雅虎金融”导入雅虎金融;
让我们回应;
异步函数searchStock(){
yahooFinance.historical({
符号:“AAPL”,
从:“2020-01-01”,
致:“2020-12-31”,
},函数(错误,引号){
console.log(引号)
});
}
但每次我尝试编译时,我都会得到:
意外标记(请注意,您需要@rollup/plugin json来导入json文件)
1: {
2:“版本”:“2020d”,
^
3:“区域”:[
4:“非洲/阿比让| LMT GMT | g.8 0 | 01 |-2ldXH.Q | 48e5”
因此,我尝试通过var yahooFinance=require('yahoo-finance');
但是我得到了Uncaught(承诺中)ReferenceError:require未在控制台中定义。您将无法在前端使用
yahoo finance
包,因为它使用节点API。由于您使用的是Sapper,您可以在a中使用该包并从客户端获取它
创建文件yahoo.json.js
并将其放置在src/routes
中。然后将以下内容复制并粘贴到其中。这将调用yahoo finance
中的历史
方法,并将结果返回为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在页面呈现之前获取数据
<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)}
导出异步函数预加载(){
const res=wait this.fetch('/yahoo.json');
const data=wait res.json();
返回{data};
}
输出let数据;
{JSON.stringify(数据)}
您可能希望增强服务器路由以添加请求参数和更好的错误处理,但这将向您展示如何使其工作。您将无法在前端使用
yahoo finance
包,因为它使用节点API。由于您使用的是Sapper,您可以在中使用该包并从客户端获取它。>
创建文件yahoo.json.js
并将其放置在src/routes
中。然后将以下内容复制并粘贴到其中。这将调用yahoo finance
中的历史
方法,并将结果返回为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在页面呈现之前获取数据
<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)}
导出异步函数预加载(){
const res=wait this.fetch('/yahoo.json');
const data=wait res.json();
返回{data};
}
输出let数据;
{JSON.stringify(数据)}
您可能希望增强服务器路由以添加请求参数和更好的错误处理,但这将向您展示如何使其工作