Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ts文件中的模块导出不是模块错误_Javascript_Node.js_Typescript - Fatal编程技术网

Javascript ts文件中的模块导出不是模块错误

Javascript ts文件中的模块导出不是模块错误,javascript,node.js,typescript,Javascript,Node.js,Typescript,我有一个config.ts,我有 module.exports = { something: 123 } 当我像导入{something}一样从“./config.ts”导入时,我得到了一个错误,config.ts'不是一个模块,有什么问题吗?我的typescript配置正确,并且在其他地方工作。如果您使用的是import{something}from./config.ts',您使用的是JavaScript模块,但是config.ts中的代码使用的是CommonJS模块。有些捆绑包之类的东西可

我有一个config.ts,我有

module.exports = { something: 123 }

当我像导入{something}一样从“./config.ts”导入时,我得到了一个错误,
config.ts'不是一个模块
,有什么问题吗?我的typescript配置正确,并且在其他地方工作。

如果您使用的是
import{something}from./config.ts'
,您使用的是JavaScript模块,但是
config.ts
中的代码使用的是CommonJS模块。有些捆绑包之类的东西可能会让你把它们混在一起,但最好不要这样做

要使
config.ts
JavaScript模块与该
import
声明兼容(该声明需要名为
something
的命名导出),请将其更改为:

export const something = 123;

当然,要通过CommonJS使用
config.ts
,使用它的代码应该是:

const { something } = require("./config.ts");

…但是考虑到您遇到的错误,我认为您的项目设置为使用JavaScript模块(
import
/
export
),这在2021年可能是最好的(现在我们必须处理静态模块不能完成任务的情况)

(FWIW,我在我的新书《JavaScript:关于ES2015-ES2020新功能的新玩具》第13章中介绍了JavaScript模块,包括动态导入和与CommonJS的对比。如果您感兴趣,请参阅我个人资料中的链接。)我可以使用
import moment from'moment'
导入包,我想我不必像使用typescript那样使用require?或者我应该使用另一种类型的导出?@NadielyJade-对,你不需要使用
require
。你使用的是JavaScript模块。你需要做的是将
config.ts
作为JavaScript模块,就像sho一样wn。(不,不需要使用不同类型的模块。你可以,但是现在没有理由这么做,因为ESM[JavaScript模块语法]在TypeScript和其他各种工具中都得到了很好的支持。)