Javascript ts文件中的模块导出不是模块错误
我有一个config.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模块。有些捆绑包之类的东西可
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和其他各种工具中都得到了很好的支持。)