【问题标题】:How to get snowpack to look inside a package for subpath如何让雪包在包内查找子路径
【发布时间】:2020-12-19 17:39:50
【问题描述】:

我现在正在构建一个雪包应用程序,我想在前端导入socket.io client(用于智能感知和离线开发测试)。但是socket.io在使用import ... from 'socket.io'时只导出后端素材。

通常,我使用

import { io } from 'socket.io/client-dist/socket.io.js';

这会得到所有正确的文件和导出,但是,当使用 snowpack 构建时,我会收到此错误:

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 导入的。我明白错误在说什么,但我在网上找不到任何东西或任何东西来解决它。有谁知道如何解决这个问题?

【问题讨论】:

    标签: node.js snowpack


    【解决方案1】:

    注意:这是一个“hacky”修复,我认为它很混乱,不能用于大型项目。

    我通过编辑socket.io 包(在node_modules 中)的package.json 对此进行了修补,以使用与实际目录路径完全相同的临时导出别名:

    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"
      },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-16
      • 2016-05-12
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 2012-02-12
      • 2017-01-23
      • 1970-01-01
      相关资源
      最近更新 更多