gpt4 book ai didi

node.js - 如何将 Node.js 的 TypeScript 代码编译为一个文件?

转载 作者:IT老高 更新时间:2023-10-28 23:07:33 25 4
gpt4 key购买 nike

我想在使用 Node.js 时将 TypeScript 编译成一个文件。

我尝试过像这样配置“tsconfig.json”:

"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": false,
"sourceMap": false,
"outFile": "./app/index.js",
"pretty": true,
"types": [
"node"
]
}",

...但是当我尝试将 module 设置为 "commonjs" 时,出现错误:

error TS6082: Only 'amd' and 'system' modules are supported alongside --outFile.

如果我将其更改为 "module": "system",则在 node 中运行文件时会出现此错误:

ReferenceError: System is not defined

如果我将 module 更改为 "amd",则在 node 中运行文件时会出现此错误:

ReferenceError: define is not defined

最佳答案

仅使用 TypeScript 编译器无法将 Node.js 模块捆绑到单个文件中:CommonJS 模块系统(由 Node.js 使用)中的每个文件都被视为单个模块,如果没有,则无法将其连接在一起在许多 JavaScript 代码 bundler (例如 Browserify、Webpack、Rollup、Parceljs 等)中都可以找到合适的模块捆绑技术。

SystemJS 等其他模块系统没有此限制,可以仅使用 TypeScript 编译器将模块定义连接到单个文件中:tsc ... --outfile bundle.js -module system。但是,Node.js 不即时支持它们。

对于实际的解决方案,有两个合理的选择:或者将您的项目配置为使用单独的工具(Browserify、Webpack 等)捆绑解决方案,或者包含 SystemJS 的实现进入您的 Node.js 应用程序(说明 here)。

我还将附注:考虑评估您是否真的需要捆绑服务器端代码。捆绑通常在前端项目中执行以减少客户端资源的大小,尽管在资源节约型场景中也可以为服务器应用程序执行捆绑。

关于node.js - 如何将 Node.js 的 TypeScript 代码编译为一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40019087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com