【问题标题】:How does lance-gg know whether to load the clientlance-gg 如何知道是否加载客户端
【发布时间】:2021-01-17 00:00:16
【问题描述】:

我正在尝试为来自 lance-gg 的 Renderer 子类编写单元测试

// test/client.js
const lance = require('lance-gg');
console.log(lance);
{
  GameEngine: [Function: GameEngine],
  GameWorld: [Function: GameWorld],
  P2PhysicsEngine: [Function: P2PhysicsEngine],
  SimplePhysicsEngine: [Function: SimplePhysicsEngine],
  BaseTypes: [Function: BaseTypes] {
    TYPES: {
      FLOAT32: 'FLOAT32',
      INT32: 'INT32',
      INT16: 'INT16',
      INT8: 'INT8',
      UINT8: 'UINT8',
      STRING: 'STRING',
      CLASSINSTANCE: 'CLASSINSTANCE',
      LIST: 'LIST'
    }
  },
  TwoVector: [Function: TwoVector],
  DynamicObject: [Function: DynamicObject],
  PhysicalObject2D: [Function: PhysicalObject2D],
  PhysicalObject3D: [Function: PhysicalObject3D],
  ServerEngine: [Function: ServerEngine],
  Lib: { Trace: [Function: Trace] }
}
./node_modules/.bin/mocha --require @babel/register ./test/client.js

但是,lance.Renderer 解析为未定义,这让我怀疑 lance 是从服务器导出而不是此处定义的客户端导出构建的:https://github.com/lance-gg/lance/blob/911b60bdb5b887aa281e7c968506028797616132/rollup.config.js

这是一个现有测试的示例,它似乎可以正确地将客户端代码编译到测试中:https://github.com/lance-gg/lance/blob/master/test/EndToEnd/multiplayer.js

我的问题是,require('lance-gg') 如何知道是导入客户端还是服务器端

如何从客户端导出编译测试?

【问题讨论】:

    标签: javascript lance


    【解决方案1】:

    lance 库对于客户端和服务器来说都是通用的,即使它是一个单独的包。两种可能的导入之间发生差异的方式是通过 lance 的 package.json 文件的 mainbrowser 属性。

    看看https://github.com/lance-gg/lance/blob/master/package.json 和这两个属性。

    在您的情况下,mocha 需要表明它正在加载浏览器预期的包。听起来 mocha 正在获取主入口点。

    https://docs.npmjs.com/cli/v6/configuring-npm/package-json#browser

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多