gpt4 book ai didi

javascript - TypeScript "import { myVar }"语法似乎在 Node/CommonJS/ES5 应用程序中编译不正确

转载 作者:行者123 更新时间:2023-12-03 04:09:57 26 4
gpt4 key购买 nike

在我的 Node 应用程序中,我有一个设置文件,它将一些设置导出为如下对象:

// settings.ts
export var settings = {
port: 1234
}

在另一个文件中,我导入这些设置并尝试引用 port 属性:

// another-file.ts
import { settings } from './settings';
console.log(settings.port);

此代码编译正确,但在运行时出现以下错误:

Cannot read property 'port' of undefined

当我检查编译后的代码时,我可以看到这种情况正在发生,因为我上面的第二个文件正在编译为:

var settings_1 = require("./settings");
console.log(settings_1.settings.port);

如果我使用调试器浏览编译后的代码,我可以看到 settings_1 变量指向从 settings.ts 导出的值。换句话说,我的 port 属性位于 settings_1.port而不位于 settings_1.settings.port。看来 TypeScript 编译器应该生成以下 JavaScript 代码:

var settings = require("./settings");
console.log(settings.port);

我做错了什么吗?或者 TypeScript 编译器是否错误地编译了我的导入?

我知道 TypeScript 编译器正在正确地对我的导入进行类型检查;如果我做这样的事情:

import { settings } from './settings';
console.log(settings.propertyThatDoesNotExist);

我收到编译器错误,指出 propertyThatDoesNotExist 不存在。

我使用的是 TypeScript 2.3.2,目标为“es5”并输出“commonjs”模块,在 Node 6.9.2 上运行。

最佳答案

想通了。这对我来说是一个愚蠢的错误(不是一直如此吗?)。我正在将应用程序从 JavaScript 转换为 TypeScript,我将 settings.js 复制并重命名为 settings.ts...但我没有删除 设置.js。结果,我实际上导入了旧的settings.js文件,该文件的导出设置不同。

删除 settings.js 后,我的应用程序使用 .ts 文件正确启动,并且我的导入按预期工作。

关于javascript - TypeScript "import { myVar }"语法似乎在 Node/CommonJS/ES5 应用程序中编译不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44369841/

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