我有一个yarn工作区,它有一个typescript nodejs服务器和一个typescript react客户端(使用create react应用程序),我还有一个公共的typescript库,但无论如何我似乎不能让它同时为这两个服务器编译。
我不是一个javascriptMaven的任何标准。
这是公共项目的索引.ts:
export * from "./interfaces/AuthModels"
这是package.json
的一部分:
{
"main": "dist/index.js",
"types": "dist/index.d.ts",
}
如果我为公共tsconfig.json
设置以下内容,它将为nodejs编译:
{
"compilerOptions": {
"target": "esnext",
"module": "commonjs",
"moduleResolution": "node",
},
}
但是在运行react应用程序时,我收到了以下错误:
Uncaught TypeError: h.keyframes is not a function
at ../../node_modules/react-hot-toast/dist/index.js (error.tsx:3:1)
at options.factory (react refresh:6:1)
at __webpack_require__ (bootstrap:24:1)
at fn (hot module replacement:62:1)
at ../common/dist/components/Notifications.js (Notifications.js:5:1)
at options.factory (react refresh:6:1)
at __webpack_require__ (bootstrap:24:1)
at fn (hot module replacement:62:1)
at ../common/dist/index.js (index.js:25:1)
at options.factory (react refresh:6:1)
如果我将下面的代码改为tsconfig.json
,它将为react编译,但不会为nodejs编译:
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
},
}
在nodejs上运行时出现以下错误:
export * from "./interfaces/AuthModels";
^^^^^^
SyntaxError: Unexpected token 'export'
1条答案
按热度按时间xxls0lw81#
您将需要排除使用node.js中不存在的浏览器API的库的任何部分,或者在适当的条件检查之后控制访问,如下所示:
“h.keyframes is not a function”(h.关键帧不是一个函数)错误告诉您所包含的内容与node.js不兼容。
一旦你完成了这些,你将需要把Typescript编译成commonjs模块格式(CJS)。这些可以直接在node.js中运行,并且因为你使用了create-react-app,你将有Webpack把它捆绑到浏览器端。这将修复你的“意外的令牌'export'”错误。