当前位置: 首页 > 面试题库 >

SyntaxError:无法在模块外部使用import语句

漆雕嘉茂
2023-03-14
问题内容

我有一个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",

问题答案:

2020更新(节点13.2.0+)

确认您已安装最新版本的Node。该--experimental-modules标志不再是必需的。只需执行 以下 操作 之一

  • 添加"type": "module"到最近的父级package.json。这样,所有.js.mjs文件都被解释为ES模块。您可以使用.cjs扩展名将单个文件解释为CommonJS 。

要么

  • .mjs扩展名明确命名文件。所有其他文件(例如).js将被解释为CommonJS,如果type未在中定义,则为默认设置package.json


 类似资料:
  • 我有一个ApolloServer项目给我带来了麻烦,所以我想我可能会更新它,并在使用最新的巴别塔时遇到问题。我的“index.js”是: 当我运行它时,我得到了错误 首先,我试图做一些事情来说服TPTB*这是一个模块(没有成功)。所以我把“导入”改成了“要求”,这就奏效了。 但是现在我在其他文件中有大约24个“导入”给我同样的错误。 *我确信我的问题的根源是我甚至不确定是什么在抱怨这个问题。我有点

  • 今天我决定尝试学习React,但每当我尝试导入以下两个模块时: 我得到一个错误: 未捕获的SyntaxError:无法在模块外部使用导入语句 以下是我尝试创建React程序所采取的步骤: 安装NodeJS 为什么我会出现这个错误,我该如何修复它?

  • 当依赖项未声明为模块时,如何从依赖项中解析“不能在模块外使用导入语句”? 我想使用Svelte/kit中的验证器来验证电子邮件。但是,在导入ESM版本时,出现“无法在模块外使用导入语句”错误。我用pnpm代替npm或纱线。 验证器似乎正在尝试使用import语句,但它是一个包。json没有指定。我猜这是错误的根本原因。 包裹。json具有“类型”:“模块” SyntaxError:无法在模块外使用

  • 在测试其中一个功能时,我遇到了这种错误。到底是什么问题? /用户/user/websprojects/hsu/src/path finding/path finding。spec.js:1从'chai'导入{expect}^^^^^^ 语法错误:无法在WrapSafe(节点:内部/模块/cjs/加载器: 1018:16)的模块外使用导入语句。_compile(节点:内部/模块/cjs/加载器: 1

  • 我正在使用NextJS与typescript,mongo Atlas,mongoose,node和Express。 当我运行node Pages/Server时,我收到以下错误:我已经上载了我的package.json文件,并且还添加了babel 从“express”导入express;^^^^^^ SyntaxError:不能在模块外部使用导入语句,位于wrapSafe(内部/modules/c

  • 我有一本书。节点js(07.10.19版本的node.js的最新版本)应用程序中的ts文件,带有导入节点模块而无默认导出。我使用这种结构: