这个问题以前被问过很多次,但我找不到解决方案
我在我的项目中使用打字稿。
我有我的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的一部分。