未定义导出 ia tsc (js) 文件



我对打字稿比较陌生,我不明白为什么在执行tsc Program.ts然后运行之后

Program.js浏览器中,它会对我大喊大叫ReferenceError: exports is not defined

程序.ts

import { TestClass } from './TestClass';
var tc = new TestClass();
console.log(tc.Test("test"));

TestClass.ts

import {Data} from "./Data";
export class TestClass
{
    constructor() {}
    Test(originalString:string)
    {
        console.log(Data.Symbols["John"] + " " + originalString);
    }
}

数据网

export abstract class Data
{
    public static Symbols:{[symbol: string] : string} = 
    {
        "John":"a5fq36831v",
    }
}

package-lock.json

{
  "requires": true,
  "lockfileVersion": 1,
  "dependencies":
  {
    "uniq": 
    {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
    }
  }
}

我已安装npm i @types/node

我看到了这个线程:打字稿参考错误:未定义导出

但我没有任何tsconfig.jsonbabelrc文件。

这个技巧对我有部分作用<script>var exports = {};</script>

因为在那之后ReferenceError: require is not defined

是否可以在不安装额外大量软件的情况下使其工作?

npm i common-js
npm WARN saveError ENOENT: no such file or directory, open 'C:RepoMastersrcTypeScriptpackage.json'
npm WARN saveError EPERM: operation not permitted, rename 'C:RepoMastersrcTypeScriptpackage-lock.json.1161578677' -> 'C:ReposrcTypeScriptpackage-lock.json'
npm WARN enoent ENOENT: no such file or directory, open 'C:RepoMastersrcTypeScriptpackage.json'
npm WARN TypeScript No description
npm WARN TypeScript No repository field.
npm WARN TypeScript No README data
npm WARN TypeScript No license field.
+ common-js@0.3.8
added 1 package in 2.141s
PS C:RepoMastersrcTypeScript> tsc ProgramParser.ts
ReferenceError: exports is not defined Program.js:2:1
ReferenceError: Parser is not defined html.html:40:6

您需要检查 commonjs 是否安装在环境中。

只需

在项目的根目录下添加一个指定编译目标的tsconfig.json文件即可。这样的事情很可能会起作用:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": true,
    "lib": [
      "dom",
      "es2015",
      "es5",
      "es6"
    ]
  }
}

我可以提供两个选项:

  • 您可以使用像 webpack 或 Parcel 这样的捆绑器来获取您的 TypeScript 代码并使其在浏览器中运行,捆绑包负责处理您的文件导入。
  • 您可以使用 tsconfig 编译器选项outFile使 TypeScript 只为所有前端 JavaScript 创建一个文件

最新更新