出口未定义 ia tsc'ed (js) 文件

Posted

技术标签:

【中文标题】出口未定义 ia tsc\'ed (js) 文件【英文标题】:Exports is not defined ia tsc'ed (js) files出口未定义 ia tsc'ed (js) 文件 【发布时间】:2019-08-17 00:30:31 【问题描述】:

我对打字稿比较陌生,我很不明白为什么在执行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);
    

数据.ts

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

我看过这个帖子:Typescript ReferenceError: exports is not defined

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

这个技巧部分适用于我<script>var exports = ;</script>t

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

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

npm i common-js

npm WARN saveError ENOENT: no such file or directory, open 'C:\Repo\Master\src\TypeScript\package.json'
npm WARN saveError EPERM: operation not permitted, rename 'C:\Repo\Master\src\TypeScript\package-lock.json.1161578677' -> 'C:\Repo\src\TypeScript\package-lock.json'
npm WARN enoent ENOENT: no such file or directory, open 'C:\Repo\Master\src\TypeScript\package.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:\Repo\Master\src\TypeScript> tsc ProgramParser.ts

ReferenceError: exports is not defined Program.js:2:1
ReferenceError: Parser is not defined html.html:40:6

【问题讨论】:

你检查过这个链接解决了ReferenceError: require is not defined***.com/questions/19059580/… 没有tsconfig.json?这听起来令人震惊。 tsconfig.json 是关于如何进行转译的配置文件。如果你想避免tsconfig.json,我想你可以使用标志。但更重要的是,您是在构建 node.js 应用程序还是 Web 应用程序?你提到了浏览器,所以我假设是网络应用程序,那么我认为你需要的是 tsc --module es6 之类的东西。 exports 未定义错误显示,因为您的 tsc 命令可能已转换为用于 nodejs 应用程序而非 Web 应用程序的 commonjs。 ***.com/questions/43042889/…的可能重复 【参考方案1】:

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

【讨论】:

尝试在 package.json 中添加 "module": "es6" 问题是我没有包 json :P 我有类似package-lock.json 我想最好的解决方案是在这个文件中导入 requires.js【参考方案2】:

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


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

【讨论】:

【参考方案3】:

我可以提供两种选择:

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

【讨论】:

以上是关于出口未定义 ia tsc'ed (js) 文件的主要内容,如果未能解决你的问题,请参考以下文章

React JS,Firebase,TypeError:无法读取未定义的属性“initializeApp”

检查jQuery中的未定义和空值

导出时返回未定义的函数

在FF3中工作时,IE8中的对象未定义错误

未捕获的引用错误,未定义通知

名称出口未在 python 中定义