使用tsc编译并使用节点运行,ReferenceError:ES模块作用域中未定义导出



这个问题以前被问过很多次,但我找不到解决方案

我在我的项目中使用打字稿。

我有我的index.ts文件,其中包含这样的代码:

import { getEnvOptions } from './env/envreader';
import express, {Express, Request, Response} from 'express';

当我用命令tsc编译它并尝试用node运行它时

我得到一个错误说:

Object.defineProperty(exports, "__esModule", { value: true });
ReferenceError: exports is not defined in ES module scope

据我所知,问题是节点运行时环境无法识别关键字";出口;由typescript编译器生成。我打算在服务器上运行这个项目,而不是在浏览器中运行;模块";作为";CommonJS";。

这是tsconfig:

{
"compilerOptions": {

"target": "ES5",                                  /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
"module": "CommonJS",                                /* Specify what module code is generated. */
"moduleResolution": "node",                       /* Specify how TypeScript looks up a file from a given module specifier. */
"allowJs": true,                                  /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
"noEmit": false,                                   /* Disable emitting files from a compilation. */
"forceConsistentCasingInFileNames": true,            /* Ensure that casing is correct in imports. */
"strict": true,                                      /* Enable all strict type-checking options. */
"skipLibCheck": true                          /* Skip type checking all .d.ts files. */
},
"include": ["./**/*.ts"],

}

如果我想继续使用typescript导入语句,我应该做些什么才能在节点环境中运行它?

删除"类型":"模块";从package.json,因为您可以使用imports而无需在package.jsn中指定,原因是import是typescript的一部分。

相关内容

  • 没有找到相关文章

最新更新