我只能使用 .require() 来要求一个模块 - 有替代方案吗?
Posted
技术标签:
【中文标题】我只能使用 .require() 来要求一个模块 - 有替代方案吗?【英文标题】:I can only require a module using .require() - is there an alternative? 【发布时间】:2021-10-15 23:32:09 【问题描述】:我已经制作了这个 npm 包:https://github.com/subgeniuscorp/secret-helper
我从主 index.ts 文件中导出一个对象,如下所示:
export default
generateSalt,
createHash,
generateApiKey,
validateHash,
generateRandomString,
这是我的 tsconfig.json 的样子:
"compilerOptions":
"target": "es6",
"module": "commonjs",
"declaration": true,
"declarationMap": true,
"outDir": "./lib",
"strict": true,
"moduleResolution": "Node",
"esModuleInterop": true
,
"include": [
"src"
],
"exclude": [
"node_modules",
"test"
]
现在当我尝试在我的节点项目(即不是打字稿项目)中使用这个包时,我只能这样做:
const sh = require("@subgeniuscorp/secret-helper").default;
我做错了什么吗?如果没有.default
位,我能做些什么来要求这个项目?我试图了解我是否做错了什么,或者这两个模块是否是这样交互的。
【问题讨论】:
【参考方案1】:您要查找的内容名为 export
export
generateSalt,
createHash,
generateApiKey,
validateHash,
generateRandomString,
然后你可以使用require
这样导入它
const sh = require("@subgeniuscorp/secret-helper")
import
import * as sh from "@subgeniuscorp/secret-helper"
或import
使用allowSyntheticDefaultImports
标志
import sh from "@subgeniuscorp/secret-helper"
【讨论】:
非常感谢,我完全没有想到以上是关于我只能使用 .require() 来要求一个模块 - 有替代方案吗?的主要内容,如果未能解决你的问题,请参考以下文章