【问题标题】:Javascript promise returns unexpected token errorJavascript 承诺返回意外的令牌错误
【发布时间】:2017-08-22 11:08:26
【问题描述】:

您好,我正在尝试在 nodeJS 中使用带有 Promise 的请求模块。

这是我的脚本

require('promise');
var request = require('request');           
const requestget = function (url) {
  return  new Promise((resolve, reject) {
    request(url, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            resolve(body);

         } else {
            reject(error);
         }
       });
  });
}
requestget('http://www.modulus.io').then(console.log);

但出现以下错误。

/home/xyz/reques.js:14
  return  new Promise((resolve, reject) {
                                        ^
SyntaxError: Unexpected token {
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3

我真的不知道这个脚本有什么问题,任何人都可以帮助我。

【问题讨论】:

  • 在function (resolve, reject) {或(resolve, reject) => {之间选择
  • 这对我有用。谢谢。我使用的是非常早期的 Node.js 版本。箭头函数登陆版本 ~8。

标签: javascript node.js request promise


【解决方案1】:

您正在尝试使用不带箭头的箭头函数。

require('promise');
var request = require('request');           
const requestget = function (url) {
  //Add the arrow on the below line
  return  new Promise((resolve, reject) => {
    request(url, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            resolve(body);

         } else {
            reject(error);
         }
       });
  });
}
requestget('http://www.modulus.io').then(console.log);

【讨论】:

  • 仍然收到以下错误:/home/xyz/reques.js:5 return new Promise((resolve, reject) => { ^ SyntaxError: Unexpected token > at Module._compile (module.js:439:25) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:906:3
  • 您可能拥有旧版本的节点,升级到节点 v6 之后的任何版本,您将获得全面支持。如果这不是一个选项,只需使用 new Promise(function(resolve, reject) { //Code here });
【解决方案2】:

在这一行,你需要确保你定义了一个函数。您可以使用如下箭头函数来执行此操作:

return new Promise((resolve, reject) => {

箭头函数的语法为(param1, param2) => {function body},与function(param1, param2) {function body} 相同。你可以阅读更多关于他们的信息here。

【讨论】:

  • 嗨尝试了同样的,但我得到这样的错误。 '。 /home/xyz/reques.js:5 return new Promise((resolve, reject) => { ^ SyntaxError: Unexpected token >'
  • 然后尝试使用return new Promise(function(resolve, reject) {。如果您想要箭头函数等最新功能,也可以使用node --harmony 运行节点,因为它们现在是推荐的执行方式(以保留范围)
  • 感谢它像魅力return new Promise(function(resolve, reject) 一样工作我仍然不知道为什么=> 功能不起作用
  • 您使用的是旧版本的节点。如果您使用node --harmony 运行它,则可以使其工作。
猜你喜欢
  • 1970-01-01
  • 2016-10-30
  • 2023-03-03
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
  • 2020-09-11
  • 2019-06-18
  • 2019-02-03
相关资源
最近更新 更多