2

在 web 应用程序中,我已经有一些用“require”声明并被 webpack 理解的包:

  • 三轨控制

这就是我使用它的方式:

var THREE = require('three');

var OrbitControls = require('three-orbit-controls')(THREE);

为了添加物理,我尝试添加库 physijs-webpack:

var PhysiJS = require('physijs-webpack')(THREE);

它在“npm run build”处失败,说:找不到模块:错误:无法解析“physijs-webpack”

在控制台(Chrome 开发工具)中显示以下错误:

"app.js:17 Uncaught Error: Cannot find module "physijs-webpack"
    at webpackMissingModule (app.js:17)
    at Object.defineProperty.value (app.js:17)
    at __webpack_require__ (bootstrap 460ca68f8e6f1e90ea58:19)
    at Object.<anonymous> (html5-entities.js:190)
    at __webpack_require__ (bootstrap 460ca68f8e6f1e90ea58:19)
    at module.exports.ctor.super_ (bootstrap 460ca68f8e6f1e90ea58:62)"

这是我的 webpack.config 文件:

var path = require('path');
var webpack = require('webpack');

module.exports = {
    entry: './src/js/app.js',
    devtool: 'inline-source-map',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js',
        publicPath: '/dist'
    }
};

依赖项是:

    "devDependencies": {
        "script-loader": "^0.7.0",
        "webpack": "^3.5.4",
        "webpack-dev-server": "^2.7.1",
        "yarn": "^0.27.5"
    },
    "dependencies": {
        "physijs": "^0.0.4",
        "physijs-webpack": "^0.0.2",
        "requirejs": "^2.3.4",
        "three": "^0.86.0",
        "three-orbit-controls": "^82.1.0"
    }
}

你能推荐一下吗,我做错了什么?

4

2 回答 2

1

我通过遵循@ https://github.com/agilgur5/physijs-webpack找到的 webpack 详细信息遇到并解决了这个问题

基本上 ...

npm install -S agilgur5/physijs-webpack

npm install -D worker-loader

我还必须更新我的 webpack 配置

// webpack.config.js
{
  module: {
    rules: [
      {
        test: /\.worker\.js$/,
        use: { loader: 'worker-loader' }
      }
    ]
  }
}

参考:

于 2018-10-15T20:12:36.693 回答
0

tl; dr - 您一直在使用由其他人发布的损坏版本。使用v0.1.0或更高版本并阅读https://github.com/agilgur5/physijs-webpack/上的说明


大家好,我是physijs-webpackrepo的创建者。

根据旧版本的 README和这个Twitter 线程,我的移植一直在进行中,直到 2018 年 9 月我决定再试一次。其他人在没有告诉我的情况下将我的 repo 发布到了 NPM,所以你最初在 NPM 上找到的包被破坏了。

2018 年 9 月,我重写了大部分 repo,并设法找到了让它工作的方法。当时agilgur5/physijs-webpack因为我无法控制 NPM 包,所以请人安装 via。那个月晚些时候,我获得了对包的控制权,现在已经发布了一个成功且有效的版本的 v0.1.0 和 v0.1.1。现在您可以通过安装physijs-webpack并按照包或 repo 的说明进行安装——即也可以安装worker-loaderdevDependency.

旧的,不工作的 NPM 版本(v0.0.2)也将很快取消发布,以避免这样的混乱。


在您的 Webpack 配置中:

此处的另一个答案是更新您的 Webpack 配置,但这是不正确且无关的(它甚至没有.worker.js扩展名)。physijs-webpack实际上是特意有意地使用了一个内联加载器,这样你就不必更新你的 webpack 配置了。


physijsNPM 包上:

我还注意到你physijspackage.json- NPM 包是由同一个人创建的,并且是physijs-webpack. 它于 2018 年 9 月未发布,同时我获得了physijs-webpackNPM 包的所有权。


关于three集成:

我注意到的另一件事three是在你的package.json. 虽然这是早期非工作版本所必需的,但在当前工作版本中,它现在是peerDependency. 您不再需要THREE作为参数传递,但您仍然需要安装它,因为 PhysiJS 的大多数用法都需要您使用三个。它也被固定到了r73THREE 的发布,因为那是 PhysiJS 支持/兼容的最后一个版本。

于 2019-02-24T21:59:43.093 回答