“如何修复此typescript文件”;“不是模块”;错误?

“如何修复此typescript文件”;“不是模块”;错误?,typescript,npm,Typescript,Npm,我刚刚将我的第一个库包发布到NPM,我正试图在一个应用程序项目中使用它 它是用typescript编写的,项目构建正常,并已发布到NPM。但是尝试使用它失败了,因为它显然不是一个有效的模块 index.ts文件中设置模块导出(afaik)的代码为: 库中的tsconfig.json文件是: { "compilerOptions": { "esModuleInterop": true, "target": "ES6", "module": "ES6", "mod

我刚刚将我的第一个库包发布到NPM,我正试图在一个应用程序项目中使用它

它是用typescript编写的,项目构建正常,并已发布到NPM。但是尝试使用它失败了,因为它显然不是一个有效的模块

index.ts文件中设置模块导出(afaik)的代码为:

库中的tsconfig.json文件是:

{
  "compilerOptions": {
    "esModuleInterop": true,
    "target": "ES6",
    "module": "ES6",
    "moduleResolution": "node",
    "declaration": true,
    "outDir": "./lib",
    "strict": true
  },
  "include": ["src"],
  "exclude": ["node_modules", "**/__tests__/*"]
}
在我的应用程序代码中,我已将包添加到my package.json(并运行npm update),并尝试将其导入到应用程序条目文件中,方法是:

import { initByClass } from "widgety";
但这给了我一个错误:

TS2306:文件“/var/app/app/node_modules/widgety/src/index.ts”不是一个 模块

我需要更改什么,才能将代码导入到另一个typescript项目中

如果它们可用,则所有项目文件:
NPM包条目:

当文件使用
export
关键字导出值时,它被视为一个模块

我认为用此行替换
module.exports=
,应该可以修复错误:

export default initByClass;

您的模块使用的是CommonJS格式,但是tsconfig中的ES6。CommonJS或ES6更好吗?我应该选择哪个,我将如何修复?如果您想保持文件的原样,请使用“commonjs”作为“模块”,并使用
require
而不是
import
如果您想使用ES6,请使用
export initByClass
导出常量initByClass=…
更好吗?嗯,取决于你的观众。如果要在Node中使用,我会使用CommonJS。否则我会使用ES6。这能回答你的问题吗?谢谢这很有帮助,但我显然也不得不从“widgety”改为导入initByClass
export const initByClass=…
将允许您从“…”导入{initByClass},如果您想这样做的话。
export default initByClass;