角度中PhysiJS的404错误

时间:2018-01-12 14:24:39

标签: angular physijs

我正在尝试使用Angular运行Physijs。到目前为止,Three Scene工作正常,但我没有得到任何物理效果。

我用npm安装了以下内容:

https://www.npmjs.com/package/physijs-browserify

用于初始化Physijs的相应Component.ts部分如下所示:

declare function require(name: string);
declare var THREE: any;
const Physijs = require('physijs-browserify')(THREE);
Physijs.scripts.worker = '/libs/physi-worker.js';
Physijs.scripts.ammo = '/libs/ammo.js';

我总是在Chrome控制台中收到以下错误。:

physi.js:393获取http://localhost:4200/libs/physi-worker.js 404(未找到)

我还尝试了node_modules的完整路径,但这两种方法都没有用:

Physijs.scripts.worker = "../testproject/node_modules/physijs-browserify/libs/physi-worker.js"

第393行的physi.js文件如下所示:

this._worker = new Worker( Physijs.scripts.worker || 'physi-worker.js' );

我甚至尝试在.angular-cli.json中添加脚本,但也没有任何影响:

"scripts": [
        "../node_modules/physijs-browserify/libs/physi-worker.js"
]

我在声明physi-worker.js的路径时做错了吗?或者还有其他问题吗?我是Angular和JavaScript的新手,所以这可能是一个明显的问题。

我非常感谢你的帮助。

问候

1 个答案:

答案 0 :(得分:0)

如果文件未在.angular-cli.json中定义为资产,或者它们位于assets文件夹中,则文件不可用。

所以你有两种可能性:

  1. 将文件放入assets文件夹,然后您的代码应如下所示:

    Physijs.scripts.worker = 'assets/physi-worker.js';
    Physijs.scripts.ammo = 'assets/ammo.js';
    
  2. 将承载文件的文件夹添加到cli:

    中的资产配置中
    "assets": [
    "assets",
    "favicon.ico"
    "./node_modules/physijs-browserify/libs"
    ],
    
  3. 我更喜欢第一种选择。