我尝试在我的React组件中使用Pannellum NPM包。
Pannellum的API可以这样使用:
pannellum.viewer('panorama', {
"type": "equirectangular",
"panorama": "https://pannellum.org/images/alma.jpg"
});我认为下面的代码:
import React, { Component } from 'react';
import './App.css';
import pannellum from 'pannellum';
class App extends Component {
componentDidMount() {
pannellum.viewer('panorama', {
"type": "equirectangular",
"panorama": "https://pannellum.org/images/alma.jpg"
});
}
render() {
return (
<div id="panorama"></div>
);
}
}
export default App;会起作用的。但事实并非如此。我得到了TypeError: __WEBPACK_IMPORTED_MODULE_2_pannellum___default.a.viewer is not a function。
还尝试了一种不同的导入语句:import { pannellum } from 'pannellum';、const pannellum = require('pannellum');,但这些语句也不起作用。
有趣的是,Pannellum的API代码是捆绑的,一旦我注释掉componentDidMount()并尝试在页面加载后通过Chrome工具控制台使用API,它就能工作。但是,没有应用CSS样式。
我显然做错了什么。我看过360-反应-三硝基苯包源代码,但我需要访问整个API,而不仅仅是渲染,所以它不适合我的需要。
谢谢你的帮助。
发布于 2018-05-02 13:13:50
查看pannellum的源代码,它不会导出任何模块,而是将所有内容都放在窗口对象上。
尝试导入代码并从窗口直接使用它。
import React, { Component } from 'react';
import './App.css';
import 'pannellum';
class App extends Component {
componentDidMount() {
window.pannellum.viewer('panorama', {
"type": "equirectangular",
"panorama": "https://pannellum.org/images/alma.jpg"
});
}
render() {
return (
<div id="panorama"></div>
);
}
}
export default App;发布于 2018-05-02 13:09:03
试一试
componentDidMount() {
window.pannellum.viewer('panorama', {
"type": "equirectangular",
"panorama": "https://pannellum.org/images/alma.jpg"
});
}https://stackoverflow.com/questions/50135098
复制相似问题