TypeError:无法使用 commerce.js 读取未定义的属性“toLowerCase”
Posted
技术标签:
【中文标题】TypeError:无法使用 commerce.js 读取未定义的属性“toLowerCase”【英文标题】:TypeError: Cannot read property 'toLowerCase' of undefined with commerce.js 【发布时间】:2021-03-22 18:35:58 【问题描述】:我一直在尝试用几种方法解决这个错误,因为其他人有类似的输出,但仍然无法完全做到。
我正在创建一个集成 commerce.js 的电子商务网站,从“@chec/commerce.js”导入后,我收到了警告 (VS):
Could not find a declaration file for module '@chec/commerce.js'. '/Users/e-commerce/node_modules/@chec/commerce.js/lib/index.js' implicitly has an 'any' type.
Try `npm install @types/chec__commerce.js` if it exists or add a new declaration (.d.ts) file containing `declare module '@chec/commerce.js';`ts(7016)
每当我触发 localhost 时,正如我所料,我看到了一条相关的错误消息,但并不完全相同(将在下面重现)。 因此我的想法是:修复 VS 中的错误消息,很可能也会修复这个错误消息。 我设法通过添加新的声明文件来解决警告(因为那里提到的包似乎还不存在) 所以,我以为是这样,然后我触发了服务器,输出和以前完全一样。
TypeError: Cannot read property 'toLowerCase' of undefined
new e
node_modules/@chec/commerce.js/lib/index.js:1
现在,显然是 node_modules 中文件 index.js 的第一行。好的,那它说什么? (这里不只写第一行,以防万一)
var _objectWithoutProperties=require("@babel/runtime/helpers/objectWithoutProperties"),_toConsumableArray=require("@babel/runtime/helpers/toConsumableArray"),_typeof=require("@babel/runtime/helpers/typeof"),_defineProperty=require("@babel/runtime/helpers/defineProperty"),_classCallCheck=require("@babel/runtime/helpers/classCallCheck"),_createClass=require("@babel/runtime/helpers/createClass"),_regeneratorRuntime=require("@babel/runtime/regenerator"),_asyncToGenerator=require("@babel/runtime/helpers/asyncToGenerator"),axios=require("axios");function _interopDefaultLegacy(e)return e&&"object"==typeof e&&"default"in e?e:default:e
但这不是唯一的,下面还有一个抱怨商务模块的人仍然
Module.<anonymous>
src/lib/commerce.js:4
1 | // @ts-ignore
2 | import Commerce from "@chec/commerce.js";
3 |
> 4 | export const commerce = new Commerce(
5 | process.env.REACT_APP_CHEC_PUBLIC_KEY,
6 | true
7 | );
好吧,现在我对我仍然看到的错误消息感到有些困惑,因此想听听您认为这可能是什么问题?
我也在这里查看一些帖子,例如Typescript react - Could not find a declaration file for module ''react-materialize'. 'path/to/module-name.js' implicitly has an any type 和相关 顺便说一句,我没有使用打字稿。
提前谢谢你。
【问题讨论】:
【参考方案1】:以下是一些应该会有所帮助的快速步骤:
转到/src
文件夹
并创建此文件chec-commerce.d.ts
d
告诉 TypeScript 这是一个声明脚本。
在刚刚创建的文件中,这样写:
declare module '@chec/commerce';
根据您导入模块的方式,这应该会清除所有错误。 请确认。
【讨论】:
感谢您的宝贵时间。我以前已经这样做了。这就是我修复在 VS 中收到的警告的方法。但是我在触发服务器时收到的错误消息仍然存在。 您是否可以为错误添加编号以提高可见性,以便我在此处更新答案? 你是什么意思? 我的意思是更新描述以有一个列表,例如1.声明一个模块,2、3等【参考方案2】:.env 文件应该在 src 文件夹之外,它对我有用,它也对你有用...
【讨论】:
@Joseph 这是一个“谢谢”的答案吗?它表明该文件不应位于 src 文件夹中,这对我来说似乎是一个答案(尽管我不知道它是否正确),尽管它看起来质量确实很低,但它仍然是一个答案。 感谢您的信息。我会永远记住这个@joseph @MarkRotteveel 对不起我的错误 其实就是这样。我多么笨拙,但是因为我看到其他人有同样的问题并且没有人提到过env文件,所以我完全忘记了它。【参考方案3】:我遇到了完全相同的错误,只要我将 .env 文件移到 src/ 文件夹之外,它就消失了。也不使用 TypeScript。
【讨论】:
【参考方案4】:替换这个:
export const commerce = new Commerce(process.env.REACT_APP_CHEC_PUBLIC_KEY, true);
与
export const commerce = new Commerce('PUBLIC_API_KEY', true);
我无法以任何其他方式解决它。
【讨论】:
以上是关于TypeError:无法使用 commerce.js 读取未定义的属性“toLowerCase”的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:无法使用 discord.js 读取属性“”错误