由于我是javascript新手,所以我使用node JS来访问不同的API。我选择的库是axios。为了确保它能正常工作,我做了这个非常基本的脚本:
- 索引.js*
console.log("Getting axios")
const axios = require("axios")
console.log("Got it")
但是我在输出中得到了这个
Uncaught SyntaxError C:\Users\<name>\Downloads\PostJs\node_modules\axios\index.js:1
import axios from './lib/axios.js';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at Module._compile (<node_internals>/internal/modules/cjs/loader.js:895:18)
at Module._extensions..js (<node_internals>/internal/modules/cjs/loader.js:995:10)
at Module.load (<node_internals>/internal/modules/cjs/loader.js:815:32)
at Module._load (<node_internals>/internal/modules/cjs/loader.js:727:14)
at Module.require (<node_internals>/internal/modules/cjs/loader.js:852:19)
at require (<node_internals>/internal/modules/cjs/helpers.js:74:18)
at <anonymous> (c:\Users\<name>\Downloads\PostJs\index.js:2:15)
at Module._compile (<node_internals>/internal/modules/cjs/loader.js:959:30)
at Module._extensions..js (<node_internals>/internal/modules/cjs/loader.js:995:10)
at Module.load (<node_internals>/internal/modules/cjs/loader.js:815:32)
at Module._load (<node_internals>/internal/modules/cjs/loader.js:727:14)
at Module.runMain (<node_internals>/internal/modules/cjs/loader.js:1047:10)
at <anonymous> (<node_internals>/internal/main/run_main_module.js:17:11)
- 当然我把名字换成了
<name>
,因为我不想欺骗自己 *
无论如何,快速搜索告诉我去我的package.json
文件,并添加"type": "module"
到它,我这样做得到这个:
package.json
{
"name": "postjs",
"type": "module",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"axios": "^1.3.4"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
但是什么都没有改变。我想我做了我应该做的一切,但是现在我不知所措。为什么会这样?
如果有帮助的话,下面是我的文件资源管理器的样子:
2条答案
按热度按时间svdrlsy41#
我检查了我的Node JS版本,我正在使用Node V12。我下载了最新的(稳定的)发行版,它工作得很好!
wlzqhblo2#
这里的问题是您将CommonJS模块与ES模块混合在一起。require是CommonJS导入模块的方式,而import是ES6导入模块的方式。
由于您已设置“类型”:“module”,则应使用import而不是require。
下面是修改index.js文件以使用import而不是require的方法:
注意,使用ES模块时,需要在导入模块时指定文件扩展名(在本例中为.js)。