gle*_*end 5 reactjs next.js abcjs
我有一个简单的项目
import Music from '../components/music';
export default function Home() {
return (
<Music></Music>
)
}
Run Code Online (Sandbox Code Playgroud)
import dynamic from 'next/dynamic';
const abcjs = dynamic(import('abcjs'), { ssr: false });
export default function Music({note}) {
return (
<>
<div id="paper"></div>
{abcjs.renderAbc("paper", "X:1\nK:D\nDDAA|BBA2|\n")}
</>
)
}
Run Code Online (Sandbox Code Playgroud)
我的package.json
是
{
"name": "music-quiz",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "cross-env NODE_OPTIONS='--inspect' next dev",
"build": "next build",
"start": "next start"
},
"dependencies": {
"abcjs": "^5.12.0",
"next": "10.2.0",
"react": "17.0.2",
"react-dom": "17.0.2",
},
"devDependencies": {
"cross-env": "^7.0.3"
}
}
Run Code Online (Sandbox Code Playgroud)
然而,浏览器告诉我abcjs.renderAbc is not a function
,据我所知,这应该可行。
如果这有什么区别的话,我会next.js
用npm run dev
.
如果我尝试记录 abcjs,我似乎会得到一个空对象。vscode
告诉我它找不到 的声明类型abcjs
,但这应该不重要。
显然该库没有正确导入,但我不知道这是为什么。
编辑:我应该补充一点,我找到了这个示例并将其改编为next
.
FAQ里也有这方面的内容,但是并没有解决问题
next/dynamic
用于动态导入React组件。
要动态导入常规 JavaScript 库,您只需使用ES2020 动态import()
.
import { useEffect } from "react";
export default function Music({ note }) {
useEffect(() => {
const abcjsInit = async () => {
const abcjs = await import("abcjs");
abcjs.renderAbc("paper", "X:1\nK:D\nDDAA|BBA2|\n")
};
abcjsInit();
}, []);
return (
<div id="paper"></div>
)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2267 次 |
最近记录: |