为了账号安全,请及时绑定邮箱和手机立即绑定

类型错误:document.querySelectorAll 不是函数

类型错误:document.querySelectorAll 不是函数

月关宝盒 2023-12-14 15:33:04
我正在使用 Meteor 框架和 React。添加了@stripe包。付款表单有效,但它不断在日志中显示以下内容:UnhandledPromiseRejectionWarning: TypeError: document.querySelectorAll is not a functionat findScript (/project/node_modules/@stripe/stripe-js/dist/stripe.js:9:26)at /project/node_modules/@stripe/stripe-js/dist/stripe.js:75:20at new Promise (<anonymous>)at loadScript (/project/node_modules/@stripe/stripe-js/dist/stripe.js:57:19)at /project/node_modules/@stripe/stripe-js/dist/stripe.js:113:10at /.meteor/packages/promise/.0.11.2.1e1wn8z.joczg++os+web.browser+web.browser.legacy+web.cordova/npm/node_modules/meteor-promise/fiber_pool.js:43:40我怎么解决这个问题?
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

这似乎是您在服务器上看到的错误(否则路径node_modules将不会显示)。所以看来您正在尝试在服务器端渲染条纹形式。这不起作用,因为服务器上不存在该功能。我认为最好的选择是在使用这种条纹形式的反应组件中添加一个防护。像这样的东西:


const MyPaymentForm = (props) => {


  if (Meteor.isServer) {

    return <div>Stripe form will load dynamically on client</div>;

  }


  render <div suppressHydrationWarning={true}>

    <StripeProviver>...</StripeProvider>

  </div>;

};

客户端版本上的参数suppressHydrationWarning是为了避免有关水合 HTML 的(常见)React 错误,该错误在客户端上的形状与从服务器返回的形状不同。


查看完整回答
反对 回复 2023-12-14
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信