Getting "Error: Cannot find module <module>" when trying to import custom package and running emulators
Getting "Error: Cannot find module <module>" when trying to import custom package and running emulators
我已经生成了一些我想在我的 firebase 函数中使用的代码。
这是我从 github 中提取的私人包裹,所以在我的 package.json
中我会有
"dependencies": {
"@company/package": "1.0.0"
...
}
根据 docs 这应该没问题。
但是,运行模拟器将无法工作,因为它找不到模块:
$ firebase emulators:start --inspect-functions
i emulators: Starting emulators: auth, functions, firestore, database, storage
⚠ functions: You are running the functions emulator in debug mode (port=9229). This means that functions will execute in sequence rather than in parallel.
⚠ functions: The following emulators are not running, calls to these services from the Functions emulator will affect production: hosting, pubsub
⚠ Your requested "node" version "14" doesn't match your global version "16"
i firestore: Firestore Emulator logging to firestore-debug.log
i database: Database Emulator logging to database-debug.log
i ui: Emulator UI logging to ui-debug.log
i functions: Watching "/home/sfalk/workspaces/web-mobile/functions" for Cloud Functions...
> Debugger listening on ws://localhost:9229/e09c9890-f15b-4634-b9bc-b8528f14c03d
> For help, see: https://nodejs.org/en/docs/inspector
⚠ Error: Cannot find module '@technical-depth/nordigen-client-typescript/api'
Require stack:
- /home/sfalk/workspaces/web-mobile/functions/lib/index.js
- /usr/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:94:18)
at Object.<anonymous> (/home/sfalk/workspaces/web-mobile/functions/lib/index.js:5:15)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
⚠ We were unable to load your functions code. (see above)
- You may be able to run "npm run build" in your functions directory to resolve this.
在 运行 构建之后,我将在 lib/index.js
中获得生成的输出:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.helloWorld = void 0;
const functions = require("firebase-functions");
const api_1 = require("@company/package/api");
// ...
但错误依旧。
澄清一下:我的 @company/package
依赖项已正确安装在 node_modules/@company/package
下,它包含一个 api.ts
文件,其中包含我需要的代码。
如何在此处成功导入我的库?
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true,
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "es2017"
},
"compileOnSave": true,
"include": [
"src"
]
}
确保文件 node_modules/@company/package/api.js
存在并导出 javascript 模块。
所以,问题源于我没有 运行 npm run build
在负责发布包的 Github 操作工作流中。
- name: Build client
working-directory: .generated/
run: |
sudo npm install typescript@~4.3.5 --save
sudo npm install
sudo npm run build # <--- The missing call for building the library
这个问题与 Firebase 或我导入包的方式无关 - 从某种意义上说,包本身已损坏。
我已经生成了一些我想在我的 firebase 函数中使用的代码。
这是我从 github 中提取的私人包裹,所以在我的 package.json
中我会有
"dependencies": {
"@company/package": "1.0.0"
...
}
根据 docs 这应该没问题。
但是,运行模拟器将无法工作,因为它找不到模块:
$ firebase emulators:start --inspect-functions
i emulators: Starting emulators: auth, functions, firestore, database, storage
⚠ functions: You are running the functions emulator in debug mode (port=9229). This means that functions will execute in sequence rather than in parallel.
⚠ functions: The following emulators are not running, calls to these services from the Functions emulator will affect production: hosting, pubsub
⚠ Your requested "node" version "14" doesn't match your global version "16"
i firestore: Firestore Emulator logging to firestore-debug.log
i database: Database Emulator logging to database-debug.log
i ui: Emulator UI logging to ui-debug.log
i functions: Watching "/home/sfalk/workspaces/web-mobile/functions" for Cloud Functions...
> Debugger listening on ws://localhost:9229/e09c9890-f15b-4634-b9bc-b8528f14c03d
> For help, see: https://nodejs.org/en/docs/inspector
⚠ Error: Cannot find module '@technical-depth/nordigen-client-typescript/api'
Require stack:
- /home/sfalk/workspaces/web-mobile/functions/lib/index.js
- /usr/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:94:18)
at Object.<anonymous> (/home/sfalk/workspaces/web-mobile/functions/lib/index.js:5:15)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
⚠ We were unable to load your functions code. (see above)
- You may be able to run "npm run build" in your functions directory to resolve this.
在 运行 构建之后,我将在 lib/index.js
中获得生成的输出:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.helloWorld = void 0;
const functions = require("firebase-functions");
const api_1 = require("@company/package/api");
// ...
但错误依旧。
澄清一下:我的 @company/package
依赖项已正确安装在 node_modules/@company/package
下,它包含一个 api.ts
文件,其中包含我需要的代码。
如何在此处成功导入我的库?
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true,
"outDir": "lib",
"sourceMap": true,
"strict": true,
"target": "es2017"
},
"compileOnSave": true,
"include": [
"src"
]
}
确保文件 node_modules/@company/package/api.js
存在并导出 javascript 模块。
所以,问题源于我没有 运行 npm run build
在负责发布包的 Github 操作工作流中。
- name: Build client
working-directory: .generated/
run: |
sudo npm install typescript@~4.3.5 --save
sudo npm install
sudo npm run build # <--- The missing call for building the library
这个问题与 Firebase 或我导入包的方式无关 - 从某种意义上说,包本身已损坏。