SyntaxError:带有axios的意外标识符

时间:2018-06-10 16:46:11

标签: javascript node.js axios

我正在尝试使用axios:

import axios from 'axios';

axios.post("http://localhost:3000/test", {"prop1": "value"}, {headers: {'X-Custom-Header': 'foobar'}})

然后编译器抱怨:

/home/developer/Desktop/reason/interoperate/src/Ax.js:1
(function (exports, require, module, __filename, __dirname) { import axios from 'axios';
                                                                     ^^^^^

SyntaxError: Unexpected identifier
    at new Script (vm.js:74:7)
    at createScript (vm.js:246:10)
    at Object.runInThisContext (vm.js:298:10)
    at Module._compile (internal/modules/cjs/loader.js:670:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
    at Module.load (internal/modules/cjs/loader.js:612:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
    at Function.Module._load (internal/modules/cjs/loader.js:543:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
    at startup (internal/bootstrap/node.js:238:19)
developer@monad:~/Desktop/reason/interoperate/src$ node Ax.js
/home/developer/Desktop/reason/interoperate/src/Ax.js:1
(function (exports, require, module, __filename, __dirname) { import axios from 'axios';  

我是否导入了错误的路径?

3 个答案:

答案 0 :(得分:7)

Node.js尚未完全支持ES模块,这意味着您无法使用M = x / L M[L == 0] = 0 关键字。您现在可以使用像Babel和Webpack这样的源代码转换器,但这需要构建步骤。

编辑:公平地说,Node.js 10.4.0有一个experimental support for ES modules,它位于一个标志后面:import。这还需要使用JS文件的--experimental-modules文件扩展名。

该功能目前标记为稳定性:1 - 实验性 - 不建议在生产环境中使用该功能。

答案 1 :(得分:1)

您可以通过下一个方式使其与节点10.4.0一起使用:

node --experimental-modules index.mjs

将其运行为:

{{1}}

但是这个功能仍然是实验性的,应该避免在生产系统中使用。

答案 2 :(得分:0)

我也被困在这里,但我在这里找到了答案: https://github.com/nuxt/docs/issues/42

由于node.js在正式的稳定版本中仍然不支持导入,因此我们应该使用require关键字。像这样:  const Axios = require('axios');

当然,要记得从npm安装axios模块。