【发布时间】:2021-07-27 19:41:33
【问题描述】:
我有一个简单的项目
import Music from '../components/music';
export default function Home() {
return (
<Music></Music>
)
}
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")}
</>
)
}
我的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"
}
}
但是,浏览器告诉我abcjs.renderAbc is not a function,据我所知,这应该可以工作。
如果有什么不同,我将运行 next.js 和 npm run dev。
如果我尝试记录 abcjs,我似乎得到了一个空对象。 vscode 告诉我它找不到 abcjs 的声明类型,但这不重要。
显然库没有正确导入,但我不知道为什么会这样。
编辑:我应该补充一点,我发现了这个 example 并将其改编为 next。
FAQ 中也有关于此的内容,但并没有解决问题
【问题讨论】:
-
next/dynamic用于动态导入 React 组件,abcjs不是。 -
@juliomalves 你知道如何导入非反应客户端库吗?