SyntaxError:无法在模块外部使用import语句
我有一个ApolloServer项目给我带来麻烦,所以我认为我可能会更新它,并且在使用最新的Babel时遇到问题。我的“ index.js”是:
require('dotenv').config()import {startServer} from './server'
startServer()
当我运行它时,出现错误“ SyntaxError:无法在模块外部使用import语句”。首先,我尝试做一些事情以说服TPTB
*,这是一个模块(没有成功)。因此,我将“导入”更改为“需要”,并且此方法可行。
但是现在我在其他文件中有大约两打“导入”,给了我同样的错误。
*我确定问题的根源在于,我甚至不确定该问题的根源。我有点以为是Babel 7(因为我来自Babel 6,所以我不得不更改预设),但我不确定100%。
我为解决方案找到的大多数内容似乎不适用于纯Node。像这里这样:
ES6模块导入,给出“未捕获的SyntaxError:意外的标识符”
说可以通过添加“ type = module”来解决,但这通常会出现在HTML中,而我没有。我还尝试使用项目的旧预设:
"presets": ["es2015", "stage-2"],"plugins": []
但这又给了我另一个错误:“错误:插件/预设文件不允许导出对象,只能导出功能。”
更新:这是我开始的依赖项:
"dependencies": {"@babel/polyfill": "^7.6.0",
"apollo-link-error": "^1.1.12",
"apollo-link-http": "^1.5.16",
"apollo-server": "^2.9.6",
"babel-preset-es2015": "^6.24.1",
回答:
回答:
确认您已安装最新版本的Node。该--experimental-modules
标志不再是必需的。只需执行 操作 :
- 添加
"type": "module"
到最近的父级package.json
。这样,所有.js
和.mjs
文件都被解释为ES模块。您可以使用.cjs
扩展名将单个文件解释为CommonJS 。
- 用
.mjs
扩展名明确命名文件。所有其他文件(例如).js
将被解释为CommonJS,如果type
未在中定义,则为默认设置package.json
。
以上是 SyntaxError:无法在模块外部使用import语句 的全部内容, 来源链接: utcz.com/qa/434626.html