У меня есть этот новый проект Ember, и я установил SDK узла Google через npm install googleapis --save-dev
. Затем я установил ember-cli-es6-transform
в надежде импортировать модули es6 из клиента узла Google API.
Однако я заметил, что в ./node_modules/googleapis
есть папка build/src
вместо папки src
. В Репозиторий Github это просто папка src
. Почему это? Это приводит к тому, что мой импорт шатается при использовании ember-cli-es6-transform
.
Это все, что есть в моих devDependencies:
"devDependencies": {
"broccoli-asset-rev": "^2.4.5",
"ember-ajax": "^3.0.0",
"ember-cli": "~3.1.4",
"ember-cli-app-version": "^3.0.0",
"ember-cli-babel": "^6.6.0",
"ember-cli-dependency-checker": "^2.0.0",
"ember-cli-es6-transform": "^1.0.0",
"ember-cli-eslint": "^4.2.1",
"ember-cli-htmlbars": "^2.0.1",
"ember-cli-htmlbars-inline-precompile": "^1.0.0",
"ember-cli-inject-live-reload": "^1.4.1",
"ember-cli-qunit": "^4.1.1",
"ember-cli-sass": "^10.0.1",
"ember-cli-shims": "^1.2.0",
"ember-cli-sri": "^2.1.0",
"ember-cli-uglify": "^2.0.0",
"ember-data": "~3.1.0",
"ember-export-application-global": "^2.0.0",
"ember-load-initializers": "^1.0.0",
"ember-maybe-import-regenerator": "^0.1.6",
"ember-resolver": "^4.0.0",
"ember-source": "~3.1.0",
"ember-welcome-page": "^3.0.0",
"eslint-plugin-ember": "^5.0.0",
"googleapis": "^40.0.1",
"loader.js": "^4.2.3",
"sass": "^1.22.2"
},
npm не требует, чтобы репозиторий размещал свой основной файл в каком-либо конкретном месте или называл его index.js. Рекомендуется просмотреть файл package.json репозитория и использовать путь и файл, указанные в ключе «основной».
Вы можете увидеть это на https://github.com/googleapis/google-api-nodejs-client/blob/cb9326b902d6c203c498a2e269f256bcc3b23c2d/package.json#L42
googleapis выбирает сборку своего исходного кода перед размещением его в npm, чтобы нам было проще его использовать, отсюда и каталог build/src.
Дополнительные сведения о «основном» ключе в package.json см. в статье https://docs.npmjs.com/files/package.json#main.
Обратите внимание, что ember-cli-es6-transform позволяет указать любой путь, поэтому просто укажите правильный путь в качестве аргумента.
app.import('node_modules/googleapis/build/src/index.js', {
using: [
{ transformation: 'es6', as: 'googleapis' }
]
});
Нет, /src на TypeScript, /build/src на ES6. Однако похоже, что build/src/index.js не имеет экспорта по умолчанию.
Когда вы говорите, что он «строит» свой исходный код, означает ли это, что пакет npm на самом деле уже написан на es5? Я пытался использовать преобразование
es6
, и оно все равно дает мнеUncaught Error: Could not find module 'googleapis' imported from ...