reactjs - 如何在 Next.js 中使用 webrtc-adapter npm 包
问题描述
我正在使用 Next.js 创建一个 React。我的 ES6 导入对于我创建的 .js 文件来说工作得很好,但是当我导入webrtc-adapter
它时它在下一个失败,但在 react-app 中成功:
import {adapterFactory} from './adapter_factory.js';
^
SyntaxError: Unexpected token {
例如这里是复制的两个链接:
- 失败(下一个): https ://repl.it/repls/SafeWorseEngine
- 作品(CRA):https ://stackblitz.com/edit/react-cjxz7s?file=index.js
以下是简化的测试用例。只需导入webrtc-adapter
并控制它。在 CRA 中工作,但不在 Next 中。
在我自己的文件中导入 ES6 效果很好,但不是外部包。有任何想法吗?
{
"name": "webrtc-test",
"version": "0.1.0",
"private": true,
"dependencies": {
"next": "^7.0.2",
"react": "^16.8.0-alpha.0",
"react-dom": "^16.8.0-alpha.0",
"webrtc-adapter": "^7.1.1"
},
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start"
}
}
在 pages/index.js 中
import adapter from 'webrtc-adapter';
console.log(adapter);
export default () => <div>Welcome to next!</div>;
我什至尝试过:
import 'webrtc-adapter';
任何帮助,将不胜感激!
解决方案
由于 Next.JS 在服务器和客户端上编译,因此您无法确定您是否处于浏览器上下文中(窗口未定义)。
要经常解决此问题,您可以使用简单的检查,例如:
if (typeof window !== 'undefined') {
var adapter = require('webrtc-adapter')
}
确保您在浏览器上下文中
推荐阅读
- reactjs - 使用 react-router v6 将 props 传递给子组件
- google-apps-script - 如何解析评论并将其转换为单元格的值?
- windows - Powershell 的 -UseDefaultCredentials 是否使用 Kerberos?
- c# - 如何获取备份列表?
- three.js - 升级到三个js 0.130.1版本用shadermaterial渲染的点和buffergeometry不渲染
- javascript - 比较函数结果并显示真实情况
- java - 即使在操作系统中安装 jdk,我也无法在 eclipse 中找到 jre
- r - R通过匹配第一个字符对字符向量进行自定义排序
- html - 使用 svg 创建自定义 div 形状(包括内容)
- cordova - Ionic 使用 PayPal 插件 vs Braintree