gpt4 book ai didi

javascript - 导出未在 ES 模块范围内定义

转载 作者:行者123 更新时间:2023-12-05 02:31:41 25 4
gpt4 key购买 nike

我创建的 nest js 项目如下。

nest new project-name

并从 module 类型的 nuxt3 导入以下内容 Node js 与 mjs文件扩展名(import的类型定义不需要写mjs)。

import { ViteBuildContext, ViteOptions, bundle } from '@nuxt/vite-builder-edge';

它给我以下错误。

Uncaught Error Error [ERR_REQUIRE_ESM]: require() of ES Module c:\project\node_modules\@nuxt\vite-builder-edge\dist\index.mjs not supported. Instead change the require of c:\project\node_modules\@nuxt\vite-builder-edge\dist\index.mjs to a dynamic import() which is available in all CommonJS modules.

所以我尝试添加 "type": "module"在 package.json 中,所以现在我遇到了以下错误。

Uncaught ReferenceError ReferenceError: exports is not defined in ES module scope This file is being treated as an ES module because it has a '.js' file extension and 'c:\project\package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension. at <anonymous> (c:\project\dist\main.js:2:23)

我该如何解决这个问题?错误与 typescript(或者说编译的 javascript)无法导入 mjs 导出有关。有什么解决办法?

{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "es2017",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true,
"skipLibCheck": true,
"strictNullChecks": false,
"noImplicitAny": false,
"strictBindCallApply": false,
"forceConsistentCasingInFileNames": false,
"noFallthroughCasesInSwitch": false
}
}

最佳答案

将 tsconfig“module”和“target”更新为“ES6”解决了这个问题。

但在那之后导入停止工作而没有扩展。

所以我不得不在导入中添加“.js”,即使它们是“.ts”文件。

例如我必须按以下方式导入 app.module.ts 文件(注意扩展名)。

从 './app.module.js' 导入 { AppModule };

关于javascript - 导出未在 ES 模块范围内定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71478604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com