我对打字稿比较陌生,我不明白为什么在执行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.json
或babelrc
文件。
这个技巧对我有部分作用<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 创建一个文件