当前位置: 首页 > 知识库问答 >
问题:

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

萧心远
2023-03-14

我有一个ApolloServer项目给我带来了麻烦,所以我想我可能会更新它,并在使用最新的巴别塔时遇到问题。我的“index.js”是:

require('dotenv').config()
import {startServer} from './server'
startServer()

当我运行它时,我得到了错误

SyntaxError: Cannot use import statement outside a module

首先,我试图做一些事情来说服TPTB*这是一个模块(没有成功)。所以我把“导入”改成了“要求”,这就奏效了。

但是现在我在其他文件中有大约24个“导入”给我同样的错误。

*我确信我的问题的根源是我甚至不确定是什么在抱怨这个问题。我有点假设它是巴别塔7(因为我来自巴别塔6,我必须改变预设),但我不是100%确定。

我所发现的大多数解决方案似乎不适用于直线节点。就像这里的这个:

ES6模块导入提供“未捕获的语法错误:意外标识符”

说它是通过添加“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",

共有3个答案

凌声
2023-03-14

对于那些和我一样在阅读答案时感到困惑的人,在你的package.json文件中,在上层添加类型:模块,如下所示:

{
  "name": "my-app",
  "version": "0.0.0",
  "type": "module",
  "scripts": { ...
  },
  ...
}
焦博实
2023-03-14

如果有人在使用TypeScript时遇到这个问题,那么为我解决这个问题的关键就是改变

    "target": "esnext",
    "module": "esnext",

    "target": "esnext",
    "module": "commonjs",

在mytsconfig.json中。我的印象是“esnext”是“最好的”,但那只是一个错误。

公孙联
2023-03-14

验证是否已安装最新版本的Node.js(或至少13.2.0)。然后按照文档中的说明执行以下操作之一:

备选办法1

在最近的父级package.json文件中,添加值为“module”的顶级“type”字段。这将确保所有.js.mjs文件都被解释为ES模块。您可以使用.cjs扩展名将单个文件解释为CommonJS。

// package.json
{
  "type": "module"
}

选择2

显式地使用. mjs扩展名命名文件。所有其他文件,如. js将被解释为普通话,如果package.json中没有定义type,这是默认的。

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

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

  • 问题内容: 我有一个ApolloServer项目给我带来麻烦,所以我认为我可能会更新它,并且在使用最新的Babel时遇到问题。我的“ index.js”是: 当我运行它时,出现错误“ SyntaxError:无法在模块外部使用import语句”。首先,我尝试做一些事情以说服TPTB *,这是一个模块(没有成功)。因此,我将“导入”更改为“需要”,并且此方法可行。 但是现在我在其他文件中有大约两打“

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

  • 提前感谢您的帮助。 这个问题似乎已经在其他地方被提出和回答,但我相信我已经尝试了所有这些解决方案,但没有取得真正的进展。 我试图为webdriverIO创建一个自定义记者。然而,当所有导入都运行时,我得到以下错误: 无法在模块外使用导入语句 如果我试图执行文件顶部的导入语句,则会在导入WebdriverTestrasER行上出现上述错误。我可以通过使用要求来解决这个问题,但是在从@wdio/记者导

  • 试图将用户模型中的“uuid”作为