请问如何正确导入外部js文件,例如BOX2D.js

看了文档里的这篇教程,http://www.cocos.com/docs/creator/scripting/modular-script.html
我自己试验了下,跟着教程做的确是可以通过require来导入自定义外部模块(跟着教程写的那个简单小例子),但我导入box2d就一直失败。

我的步骤是这样,新建一个空白项目,
从网上下载box2d的html5版,即box2dweb,然后把box2d.js拖入到asset中,然后就开始报错了,

看内容貌似跟box2d没有关系。
然后我想导入它报错,那把它删了不就没事,但我太天真,删了后错误仍然在。
而且组件系统开始崩溃,任何对象上都看不到任何组件,即使再手动拖上去。

然后我手贱点了开发者选项里的重启并清除缓存,然后整个creator就崩溃了,重启后打开项目,
点击“打开”后就什么都没有出现。
我现在无奈只能把creator删了,重新下载装一个。。。

真心好脆弱啊。。。。

原谅我没上图,因为整个creator崩溃了,我只好重新下载安装。

顺便说下,如果我创建一个空白项目,构建发布后,找到index.html,然后再里面添加box2d.js的引用,

是可以正常引用,并且不会出任何BUG,但为何在creator里导入box2d.js就会崩溃呢?

但是creator项目里又没有index.html文件,我便无法通过这种方式来引用它,好矛盾啊。

你们可以拿我上面发的那个box2d.js去你们的项目试一试。注意备份项目哦。

谢谢反馈,我今天就看下这个问题,顺便写一个导入JS文件的文档

目前工作流里面对于 index.html 的使用还在讨论,下个版本应该会有一个不错的解决方案

我重现了你说的问题,你可以先使用 npm 来包含 box2d,我会看看这个问题的根源是什么。

使用 npm 引入 box2d 的方法:

  1. 在项目目录下运行:npm install box2dweb-commonjs
  2. 在需要使用 box2d 的组件中 require:var box2d = require(‘box2dweb-commonjs’);

目前外部的 JS,仅支持符合 CommonJS 规范的前端库。我们将来会开放到支持所有前端库(当然还是有些前端库是无法跑在 JSB 上)。

崩溃问题我们会确认一下

我这边验证了一下,引用正确的JS文件后,重新加载并清除缓存后都正常可用,在windows客户端和mac客户端都可以正常重新加载,并没有出现应用程序崩溃的现象,会不会与引用JS文件报错有关?个人猜测。

引用楼主的“box.js”文件后,会产生相同的报错信息(估计是不支持楼主的js文件的引用),但是重新加载并清除缓存后应用程序没有崩溃退出,删除楼主的引用文件后再次重新加载,应用程序恢复正常,不会报错,可以正常的继续使用。

panda 写的教程:第三方 JavaScript 模块引用
http://cocos.com/docs/creator/scripting/third-party-module.html

:10: :11: :11: :11: :11: :11: :11: