Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Yahoo财务模块与sapper_Javascript_Node.js_Svelte_Sapper - Fatal编程技术网

Javascript Yahoo财务模块与sapper

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: '

我正在做一个项目,我想使用yahooFinance的darta。 我找到了这个项目。 我还使用了基本的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>

从“雅虎金融”导入雅虎金融;
让我们回应;
异步函数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(数据)}
您可能希望增强服务器路由以添加请求参数和更好的错误处理,但这将向您展示如何使其工作