问题描述
我现在正在构建一个 Snowpack 应用程序,我想在前端导入 socket.io client
(用于智能感知和离线开发测试)。但是,socket.io
仅在使用 import ... from 'socket.io'
时导出后端材料。
通常,我使用
import { io } from 'socket.io/client-dist/socket.io.js';
获得所有正确的文件和导出,但是,当使用雪包构建时,我收到此错误:
Package exports for 'C:\dev\JS\Node+Browser\foo\node_modules\socket.io' do not define a './client-dist/socket.io.js' subpath
哪个构建失败,停止一切。
现在,我的 snowpack.config
真的很简单:
module.exports = {
buildOptions: {
out: 'dist/client'
},mount: {
"src/client": "/"
}
}
我的所有其余模块都运行良好,因为它们都是仅使用 import ... from 'module-name
导入的。我明白错误在说什么,但我在网上找不到任何东西或任何东西来解决它。有谁知道如何解决这个问题?
解决方法
注意:这是一个“hacky”修复,我认为它很混乱,不能用于更大的项目。
我通过编辑 package.json
包的 socket.io
(在 node_modules
中)使用与实际目录路径完全相同的临时导出别名对此进行了修补:
node_modules/socket.io/package.json
"exports": {
".": [
{
"require": "./dist/index.js","import": "./wrapper.mjs"
},"./src/index.js"
],"./client-dist/socket.io": "./client-dist/socket.io.js","path-to-other-modules": "same-path"
},