Physijs-webpack 库因要求而失败
Physijs-webpack library fails by require
在 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"
}
}
你能推荐一下吗,我做错了什么?
我遇到并解决了这个问题,方法是按照@ 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' }
}
]
}
}
参考文献:
tl;dr - 您一直在使用由其他人发布的损坏版本。使用 v0.1.0
或更高版本并阅读 https://github.com/agilgur5/physijs-webpack/
中的说明
大家好,我是 physijs-webpack
repo 的创建者。
根据 old version of the README and this Twitter thread,直到 2018 年 9 月我决定再次尝试时,我的端口一直在进行中,构建失败。其他人在没有告诉我的情况下将我的 repo 发布到 NPM,因此你最初在 NPM 上找到的包已损坏。
2018 年 9 月,我重写了大部分回购协议,并设法找到了让它工作的方法。当时,我要求人们通过 agilgur5/physijs-webpack
安装,因为我无法控制 NPM 包。那个月晚些时候,我获得了包的控制权,现在已经发布了 v0.1.0 和 v0.1.1,它们具有成功的工作构建。现在您可以通过 physijs-webpack
安装并按照包或 repo 的说明进行操作 - 即也将 worker-loader
安装为 devDependency
.
旧的、不起作用的 NPM 版本 (v0.0.2) 也将很快取消发布,以避免像这样的混淆。
在您的 Webpack 配置上:
这里的另一个答案是更新你的 Webpack 配置,但那是 不正确的 和无关的(它甚至没有.worker.js
分机)。 physijs-webpack
实际上 专门 和 有意 使用 in-line loader 这样你 就不会 必须更新你的 webpack 配置。
在 physijs
NPM 包中:
我还注意到您的 package.json
中有 physijs
-- NPM 包是由同一个人创建的,并且是 physijs-webpack
的副本。它于 2018 年 9 月取消发布,同时我获得了 physijs-webpack
NPM 包的所有权。
关于 three
集成:
我注意到的另一件事是 three
在你的 package.json
中。虽然这是较早的不工作版本所必需的,但在当前工作版本中,它现在是 peerDependency
。您不再需要将 THREE
作为参数传递,但您仍然需要安装它,因为 PhysiJS 的大多数用法无论如何都需要您使用三个。它也被固定到 r73
版本的三个,因为这是 PhysiJS 支持/兼容的最后一个版本。
在 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"
}
}
你能推荐一下吗,我做错了什么?
我遇到并解决了这个问题,方法是按照@ 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' }
}
]
}
}
参考文献:
tl;dr - 您一直在使用由其他人发布的损坏版本。使用 v0.1.0
或更高版本并阅读 https://github.com/agilgur5/physijs-webpack/
大家好,我是 physijs-webpack
repo 的创建者。
根据 old version of the README and this Twitter thread,直到 2018 年 9 月我决定再次尝试时,我的端口一直在进行中,构建失败。其他人在没有告诉我的情况下将我的 repo 发布到 NPM,因此你最初在 NPM 上找到的包已损坏。
2018 年 9 月,我重写了大部分回购协议,并设法找到了让它工作的方法。当时,我要求人们通过 agilgur5/physijs-webpack
安装,因为我无法控制 NPM 包。那个月晚些时候,我获得了包的控制权,现在已经发布了 v0.1.0 和 v0.1.1,它们具有成功的工作构建。现在您可以通过 physijs-webpack
安装并按照包或 repo 的说明进行操作 - 即也将 worker-loader
安装为 devDependency
.
旧的、不起作用的 NPM 版本 (v0.0.2) 也将很快取消发布,以避免像这样的混淆。
在您的 Webpack 配置上:
这里的另一个答案是更新你的 Webpack 配置,但那是 不正确的 和无关的(它甚至没有.worker.js
分机)。 physijs-webpack
实际上 专门 和 有意 使用 in-line loader 这样你 就不会 必须更新你的 webpack 配置。
在 physijs
NPM 包中:
我还注意到您的 package.json
中有 physijs
-- NPM 包是由同一个人创建的,并且是 physijs-webpack
的副本。它于 2018 年 9 月取消发布,同时我获得了 physijs-webpack
NPM 包的所有权。
关于 three
集成:
我注意到的另一件事是 three
在你的 package.json
中。虽然这是较早的不工作版本所必需的,但在当前工作版本中,它现在是 peerDependency
。您不再需要将 THREE
作为参数传递,但您仍然需要安装它,因为 PhysiJS 的大多数用法无论如何都需要您使用三个。它也被固定到 r73
版本的三个,因为这是 PhysiJS 支持/兼容的最后一个版本。