Error deploying with firebase on npm --prefix $RES

2019-01-10 22:23发布

I have a fresh install of firebase tools (following this tutorial) and I'm trying to upload my first firebase function. I get this issue with the hello-world example that they initialise when you run firebase init (The only set up the functions CLI feature during the init)

If I replace $RESOURCE_DIR in firebase.json with my functions folder it works, but of course that Is bad practice and I'd like to find a proper $RESOURCE_DIR replacement that works.

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

7条回答
家丑人穷心不美
2楼-- · 2019-01-10 22:34

It wants to lint your cloud functions, meaning it will check your code for obvious errors like a compiled language would throw errors at compile time.

It's not necessary, you can always remove it by going into firebase.json and updating functions.predeploy to be an empty array.

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

What is "Linting"?

查看更多
ら.Afraid
3楼-- · 2019-01-10 22:36

Try to replace $RESOURCE_DIR with %RESOURCE_DIR% in your firebase.json file.

查看更多
你好瞎i
4楼-- · 2019-01-10 22:40

SUMMARIZING

  1. Install ESLint locally to add "devDependencies" to package.json. Run:

     `npm install eslint --save-dev`
    
  2. Workaround for Windows as stated above. Change firebase.json:

     `npm --prefix $RESOURCE_DIR run lint` to `npm --prefix %RESOURCE_DIR% run lint`
    
  3. Optionally, add the following to package.json:

     "scripts": { "lint": "eslint"} or "scripts": { "lint": "eslint.js"}
    
查看更多
甜甜的少女心
5楼-- · 2019-01-10 22:46

you can simply make your firebase.json file like this:

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

what I'm doing is replace $RESOURCE_DIR with hard coded path of function folder itis working nice for me

查看更多
爷的心禁止访问
6楼-- · 2019-01-10 22:48

This one should solve the issue without workaround

npm install -g git://github.com/firebase/firebase-tools#master

please try this installation again in ur project folder it should solve the issue.

查看更多
爷的心禁止访问
7楼-- · 2019-01-10 22:49

Modify in firebase.json from "npm --prefix $RESOURCE_DIR run lint" to "npm --prefix %RESOURCE_DIR% run lint"

查看更多
登录 后发表回答