Я пытался решить эту ошибку несколькими способами, так как у других людей были похожие результаты, но они все еще не могли сделать это полностью.
Я создаю сайт электронной коммерции, интегрирующий 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)
Всякий раз, когда я запускал локальный хост, как я и ожидал, я видел соответствующее сообщение об ошибке, хотя и не совсем такое же (ниже оно будет воспроизведено).
Поэтому я подумал: исправление сообщения об ошибке в VS, скорее всего, исправит и это.
Мне удалось решить предупреждение, добавив новый файл объявления (потому что кажется, что упомянутый там пакет еще не существует)
Итак, я подумал, что это так, затем я запустил сервер, и результат точно такой же, как и раньше.
TypeError: Cannot read property 'toLowerCase' of undefined
new e
node_modules/@chec/commerce.js/lib/index.js:1
Теперь, видимо, это первая строка файла index.js в node_modules. Хорошо, что там тогда написано? (я напишу здесь больше, чем только первую строчку, на всякий случай)
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 | );
Что ж, теперь я немного запутался в сообщениях об ошибках, которые я все еще вижу, и поэтому хотел бы услышать, в чем, по вашему мнению, может быть проблема?
Я также проверяю некоторые сообщения здесь, такие как Реагирование машинописного текста — Не удалось найти файл объявления для модуля «реагировать-материализоваться». 'path/to/module-name.js' неявно имеет любой тип и связанный
Кстати, я не использую машинопись.
Заранее спасибо.
Вот несколько быстрых шагов, которые должны помочь:
/src
chec-commerce.d.ts
d
сообщает TypeScript, что это скрипт объявления.declare module '@chec/commerce';
В зависимости от того, как вы импортируете модуль, это должно устранить все ошибки.
Любезно подтвердить.
Можете ли вы добавить нумерацию к ошибкам для лучшей видимости, чтобы я обновил ответ здесь?
что ты имеешь в виду?
Я имею в виду обновить описание, чтобы иметь список, например. 1. объявить модуль, 2, 3 и т. д.
Файл .env должен находиться вне папки src, и он работает для меня, он также будет работать и для вас...
@Joseph Как это ответ "спасибо"? Это предполагает, что файл не должен быть в папке src, что выглядит как ответ для меня (хотя я не знаю, правильно ли это), и хотя он кажется некачественным, это все же ответ.
Спасибо за информацию . Я всегда буду помнить этого @joseph
@MarkRotteveel извините за мою ошибку
Это было на самом деле так. Как неуклюже с моей стороны, но поскольку я видел других людей с такой же проблемой, и никто никогда не упоминал файл env, я совершенно забыл об этом.
У меня была точно такая же ошибка, она исчезла, как только я переместил файл .env за пределы папки src/. Также не использую TypeScript.
Замените это:
export const commerce = new Commerce(process.env.REACT_APP_CHEC_PUBLIC_KEY, true);
с
export const commerce = new Commerce('PUBLIC_API_KEY', true);
Я не мог исправить это по-другому.
Спасибо за ваше время. Я уже делал это раньше. Вот как я исправил предупреждения, которые я получил в VS. Но сообщение об ошибке, которое я получаю при запуске сервера, все еще там.