javascript Vercel的非预期生产问题:在开发中工作,而不是在生产中工作,尽管恢复到工作提交

yzxexxkh  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(90)

在本地开发环境中,一切都运行得很好,但是当应用程序处于生产环境中时,我会遇到错误。令人困惑的部分是,我恢复到以前的提交,其中生产工作正常,我仍然面临同样的问题。
错误详细信息:错误消息主要围绕不同包中的“exports”没有定义包子路径,它们看起来像这样:

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './cjs/stripe.cjs.node.js' is not defined by "exports" in /.../node_modules/stripe/package.json
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './dist/index.cjs' is not defined by "exports" in /.../node_modules/express-rate-limit/package.json

我还遇到了一个ReferenceError:require is not defined in ES module scope error,even though I am using ES6 import syntax in my JavaScript files.由于“类型”,它被视为ES模块:package.json中的“模块”,并且它在本地工作。
采取的步骤:
1.已恢复为工作提交:我已经在生产中一切正常的时候恢复到提交,但是我仍然遇到同样的错误。
1.检查Node.js版本:在本地,我使用的是Node.js v19.6.1,而Vercel默认支持18.x,最近都没有改变。
1.已审查的依赖关系和导入语句:我已经检查了package.json中的import语句和依赖项,确保它们被正确配置并锁定到特定版本。
即使在开发环境中一切正常,并且没有进行任何重大更改,但在Vercel的生产环境中,是什么原因导致了这个突然的问题?

c3frrgcw

c3frrgcw1#

我也使用了CJS导入:
paymentController.js

import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

rateLimiter.js

import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const rateLimit = require('express-rate-limit')

看起来ESM导入对于npm模块,stripe和express-rate-limit没有正常运行,提示切换到专门针对这些模块的CJS导入。

相关问题