在npm上使用firebase部署时出错--prefix $ RESOURCE_DIR运行lint

时间:2018-01-19 16:17:32

标签: firebase npm google-cloud-functions

我有一个全新安装的firebase工具(遵循此tutorial),我试图上传我的第一个firebase功能。我在hello-world示例中遇到了这个问题,它们在运行firebase init时初始化(在init期间唯一设置函数CLI功能)

如果我将$RESOURCE_DIR中的firebase.json替换为我的功能文件夹,它可以正常运行,但当然这是不好的做法,我想找到一个合适的$RESOURCE_DIR替代品

PS D:\workspace\firebase-functions> firebase deploy

    === Deploying to 'newagent-5221d'...

i  deploying functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path D:\workspace\firebase-functions\$RESOURCE_DIR\package.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open 'D:\workspace\firebase-functions\$RESOURCE_DIR\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\dtlut\AppData\Roaming\npm-cache\_logs\2018-01-19T15_57_22_990Z-debug.log

Error: functions predeploy error: Command terminated with non-zero exit code4294963238

9 个答案:

答案 0 :(得分:110)

尝试将{RESOURCE_DIR替换为firebase.json文件中的%RESOURCE_DIR%。

答案 1 :(得分:25)

你可以简单地制作你的firebase.json文件:

{
  "functions": {
    "predeploy": [
      "npm --prefix ./functions/ run lint",
      "npm --prefix ./functions/ run build"
    ]
  }
}

我正在做的是将$ RESOURCE_DIR替换为函数文件夹的硬编码路径 它对我有好处

答案 2 :(得分:19)

它想要你的云功能,这意味着它会检查你的代码是否有明显的错误,比如编译语言会在编译时抛出错误。

没有必要,您可以通过进入firebase.json并将functions.predeploy更新为空数组来删除它。

  "functions": {
    "predeploy": [],
    "source": "functions" 
  }

What is "Linting"?

答案 3 :(得分:7)

概要

  1. 在本地安装ESLint以添加" devDependencies"到 package.json 。运行:

     `npm install eslint --save-dev`
    
  2. 如上所述的Windows解决方法。更改 firebase.json

     `npm --prefix $RESOURCE_DIR run lint` to `npm --prefix %RESOURCE_DIR% run lint`
    
  3. 或者,将以下内容添加到 package.json

     "scripts": { "lint": "eslint"} or "scripts": { "lint": "eslint.js"}
    

答案 4 :(得分:4)

找到firebase.json文件 然后更改这些行

"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"

"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"

会起作用

答案 5 :(得分:1)

在" npm --prefix $RESOURCE_DIR run lint"中修改firebase.json到" npm --prefix %RESOURCE_DIR% run lint"

答案 6 :(得分:0)

此人应该解决此问题,而无需解决方法

df = df[df['CODE']!='D']

请在您的项目文件夹中再次尝试安装,这样可以解决该问题。

答案 7 :(得分:0)

附注,如果您使用的是 yarn(而不是 npm),则需要指定 --cwd 参数(而不是 --prefix

firebase.json 示例:

{
  ...
  "functions": {
    "predeploy": [
      "yarn --cwd \"$RESOURCE_DIR\" lint",
      "yarn --cwd \"$RESOURCE_DIR\" build"
    ]
  },
  ...
}

答案 8 :(得分:-1)

这是我的云功能成功部署的工作

"functions": {
"predeploy": [
  "npm --prefix \"%RESOURCE_DIR%\" run lint",
  "npm --prefix \"%RESOURCE_DIR%\" run build"
],`enter code here`
"source": "functions"