【发布时间】:2020-12-16 20:48:24
【问题描述】:
我在尝试部署函数时遇到了这个问题:
Deployment error.
Build failed: npm ERR! code ENOLOCAL
npm ERR! Could not install from "../config/myconfig" as it does not contain a package.json file.
这是在更新我的functions 目录as suggested by the official docs 中的package.json 之后的样子:
...
"dependencies": {
"sms_sender": "file:./",
"myconfig": "file:../config/myconfig",
"firebase-admin": "^8.10.0",
"firebase-functions": "^3.6.1"
},
...
这应该可以修复 GCP 日志上的堆栈跟踪中看到的此错误:
A 2020-08-27T12:43:39.026Z sendMessage Could not load the function, shutting down. sendMessage
A 2020-08-27T12:43:39.020Z sendMessage at Function.Module._load (internal/modules/cjs/loader.js:585:3) sendMessage
A 2020-08-27T12:43:39.020Z sendMessage at tryModuleLoad (internal/modules/cjs/loader.js:593:12) sendMessage
A 2020-08-27T12:43:39.020Z sendMessage at Module.load (internal/modules/cjs/loader.js:653:32) sendMessage
A 2020-08-27T12:43:39.020Z sendMessage at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) sendMessage
A 2020-08-27T12:43:39.019Z sendMessage at Module._compile (internal/modules/cjs/loader.js:778:30) sendMessage
A 2020-08-27T12:43:39.019Z sendMessage at Object.<anonymous> (/workspace/sms_sender.js:5:16) sendMessage
A 2020-08-27T12:43:39.019Z sendMessage at require (internal/modules/cjs/helpers.js:25:18) sendMessage
A 2020-08-27T12:43:39.019Z sendMessage at Module.require (internal/modules/cjs/loader.js:692:17) sendMessage
A 2020-08-27T12:43:39.019Z sendMessage at Function.Module._load (internal/modules/cjs/loader.js:562:25) sendMessage
A 2020-08-27T12:43:39.019Z sendMessage at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) sendMessage
A 2020-08-27T12:43:39.019Z sendMessage Detailed stack trace: Error: Cannot find module '../config/myconfig' sendMessage
A 2020-08-27T12:43:39.019Z sendMessage Did you list all required modules in the package.json dependencies? sendMessage
A 2020-08-27T12:43:39.019Z sendMessage Provided module can't be loaded. sendMessage
sendMessage 是我在 index.js 中的后台函数,它导入了“sms_sender”模块:
exports.sendMessage = functions.https.onRequest(async (req, res) => {
...
// send the sendMessage
sms_sender.sendMsg("+123567890", "hello, my friend!");
...
}
sms_sender.js:
const config = require('../config/myconfig');
module.exports = {
sendMsg: async function(recipientNum, message) {
...
}
}
项目结构:
/project-root
/config
myconfig.js
/functions
index.js
sms_sender.js
package.json
/tests
...
package.json
我查看了这个related post,但它在谈论外部依赖项。
我应该如何告诉 Node/npm 'myconfig' 只是一个本地文件,而不是真正的模块本身?
我尝试将存根“package.json”文件放入 /config 但我仍然得到相同的Could not install from "../config/myconfig" as it does not contain a package.json file. 错误
【问题讨论】:
标签: node.js firebase npm google-cloud-firestore google-cloud-functions