语法错误:带有 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';  

我导入的路径是否错误?

Node.js 还不完全支持 ES 模块,这意味着您不能使用import关键字。您现在可以将其与 Babel 和 Webpack 等源代码转译器一起使用,但这需要一个构建步骤。

编辑:公平地说,Node.js 10.4.0 对 ES 模块有实验性支持,它后面有一个标志:--experimental-modules。这还需要对 JS 文件使用.mjs文件扩展名。

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

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

// Create a file named index.mjs (the extension is the key)
import axios from 'axios';
console.log(axios);

运行方式为:

node --experimental-modules index.mjs

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

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

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

当然,请记住从 npm 安装 axios 模块。

最新更新