Firebase deploy - не удается найти модуль локальной зависимости - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть подмодуль с именем shared, который расположен рядом с папкой backend (которая является папкой облачных функций):

enter image description here

Я добавил локальную зависимость shared в backend/package.json примерно так:

"dependencies": {
    ...
    "shared": "file:../shared"
}

Я запустил npm install и убедился, что node_modules/shared существует.Хотя, когда я запускаю следующий код:

firebase deploy --only functions

я получаю следующую ошибку (по firebase):

Error: Error parsing triggers: Cannot find module 'shared/common'

Try running "npm install" in your functions directory before deploying.

Эта ошибка происходит из-за этой строки:

import { currentWeek } from 'shared/common';

Если я изменю каталог на ../../../shared/common, firebase скомпилирует без ошибок.


shared / common / index.ts:

export { currentWeek } from './current-week';

shared / tsconfig.json:

{
  "compilerOptions": {
    "baseUrl": ".",
    "target": "es5",
    "module": "commonjs",
    "declaration": true,
    "strict": true,
    "removeComments": true
  }
}

backend / tsconfig.json:

{
  "compilerOptions": {
    "baseUrl": ".",
    "declaration": true,
    "outDir": "./dist",
    "module": "commonjs",
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "allowSyntheticDefaultImports": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "resolveJsonModule": true,
    "target": "es6",
    "moduleResolution": "node",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2015",
      "dom"
    ]
  },
  "include": [
    "./src/**/*",
    "../shared/**/*"
  ]
}

Почему я получаю эту ошибку, если у меня есть этот модуль?Я что-то упускаю?

1 Ответ

0 голосов
/ 24 февраля 2019

Я думаю, вам нужно настроить module-resolution для компиляции машинописи.

Для вашего случая:

{
  "compilerOptions": {
    "baseUrl": ".", // This must be specified if "paths" is.
    "paths": {
      "shared/*": ["../shared/*"] // This mapping is relative to "baseUrl".
    }
  }
}

Вы можете назвать shared под другим именем.

{
      "compilerOptions": {
        "baseUrl": ".", // This must be specified if "paths" is.
        "paths": {
          "myLib/*": ["../shared/*"] // This mapping is relative to "baseUrl".
        }
      }
    }

Использование:

import { currentWeek } from "myLib/common";
...