'三'中未找到导出'默认'(导入为'三')

时间:2017-08-29 11:20:14

标签: reactjs ecmascript-6 vue.js

概述 在main.js中,添加

import Three from 'three'

Vue.use(Three)

使用npm run dev启动dev服务器。 预期的行为 Vue项目应该加载没有错误。 实际行为 开发服务器发出此警告:

warning  in ./src/main.js
    7:8-14 "export 'default' (imported as 'Three') was not found in 'three'

浏览器的js控制台显示错误:

Uncaught TypeError: Cannot read property 'installed' of undefined
at Function.Vue.use (eval at <anonymous> (app.js:723), <anonymous>:3443:15)
at eval (eval at <anonymous> (app.js:778), <anonymous>:14:45)
at Object.<anonymous> (app.js:778)
at __webpack_require__ (app.js:660)
at fn (app.js:84)
at Object.<anonymous> (app.js:964)
at __webpack_require__ (app.js:660)
at app.js:709
at app.js:712

2 个答案:

答案 0 :(得分:6)

这是因为ThreeJS库中没有默认导出,所以你可以导入这样的所有内容:

import * as Three from 'three';

此外,您不需要Vue.use,因为这不是VueJS插件。

由于没有默认导出,您可以从ThreeJS导入特定部分,如下所示:

import { Scene } from 'three';

答案 1 :(得分:1)

你不能直接使用Three.js,你需要一个Vue包装器,你可以找到一个here

如果您想直接使用它,您有几种选择:

  1. 将其导入每个文件并使用它:

    import Three from 'three'
    Three.doSomething
    
  2. 将其导入主文件并将其放在窗口对象上:

    window.Three = require('Three');
    
  3. 将其添加到Vue实例(首选方式):

     import Three from 'three';
     Object.definePrototype(Vue.prototype, '$three', { value: Three});
    
  4. 然后您可以像这样引用它:this.$three