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

Daa*_*tik 53 npm firebase google-cloud-functions

我有一个全新安装的firebase工具(按照本教程),我正在尝试上传我的第一个firebase功能.我在hello-world示例中遇到了这个问题,它们在运行firebase init时初始化(在init期间唯一设置函数CLI功能)

如果我取代$RESOURCE_DIRfirebase.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
Run Code Online (Sandbox Code Playgroud)

Kam*_*oda 117

尝试在firebase.json文件中用%RESOURCE_DIR%替换$ RESOURCE_DIR .

  • 请注意,这是一种解决方法,它不是解决方案.这对跨平台工作的团队没有帮助,因为他们每个人都必须维护自己通常属于源代码控制的文件副本.我已经在内部与Firebase团队一起提出了这个问题,并且将来会在这里做出改变. (10认同)

Inz*_*lik 26

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

{
  "functions": {
    "predeploy": [
      "npm --prefix ./functions/ run lint",
      "npm --prefix ./functions/ run build"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在做的是用函数文件夹的硬编码路径替换$ RESOURCE_DIR它对我来说很好用


Neo*_*Neo 20

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

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

  "functions": {
    "predeploy": [],
    "source": "functions" 
  }
Run Code Online (Sandbox Code Playgroud)

什么是"Linting"?


Cut*_*cow 8

总结

  1. 在本地安装ESLint以将"devDependencies"添加到package.json.跑:

     `npm install eslint --save-dev`
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如上所述的Windows解决方法.改变firebase.json:

     `npm --prefix $RESOURCE_DIR run lint` to `npm --prefix %RESOURCE_DIR% run lint`
    
    Run Code Online (Sandbox Code Playgroud)
  3. (可选)将以下内容添加到package.json:

     "scripts": { "lint": "eslint"} or "scripts": { "lint": "eslint.js"}
    
    Run Code Online (Sandbox Code Playgroud)


Ais*_*iya 6

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

"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
Run Code Online (Sandbox Code Playgroud)

"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"
Run Code Online (Sandbox Code Playgroud)

它会工作