gpt4 book ai didi

javascript - 节点JS : NOT able to set PERCY_TOKEN via package script with start-server-and-test

转载 作者:行者123 更新时间:2023-12-03 16:57:42 25 4
gpt4 key购买 nike

我一直在努力设置 PERCY_TOKEN根据官方guideline from percy 在本地测试运行并通过yarn触发.
该指南说:

$ PERCY_TOKEN=aaabbbcccdddeeefff PERCY_BRANCH=local npm test
我现在的尝试是这样的:

package.json



...
"scripts": {
"start": "react-scripts -r @cypress/instrument-cra start",
"start:silent": "BROWSER=none yarn start",
"start:server": "start-server-and-test start:silent http://localhost:3000",
"build": "react-scripts build",
"eject": "react-scripts eject",
"envGenerateExample": "cat .env | sed 's/=.*/=/g' > .env.example",
"jest:test": "react-scripts test --env=jest-environment-jsdom-sixteen",
"cy:run": " 'yarn start:server './node_modules/.bin/cypress run'",
"cy:open": "yarn start:server './node_modules/.bin/cypress open'",
"cy:ci": "yarn start:server cy:chrome",
"cy:chrome": "cypress run --browser chrome --record",
"percy:exec": "yarn percy exec -- cypress run",
"cy:percy": "yarn start:server percy:exec",
"percy:local": "PERCY_TOKEN=$(grep 'PERCY_TOKEN.*' .env | sed 's/.*=//'); PERCY_BRANCH=local;",
"cy:percy:local": "yarn percy:local && yarn start:server percy:exec"
},
...
$ yarn cy:percy:local

Compiled successfully!

You can now view playground in the browser.

Local: http://localhost:3000
On Your Network: http://192.168.1.163:3000

Note that the development build is not optimized.
To create a production build, use yarn build.

...

> playground@0.2.0 percy:exec /Users/norfeldt/Repos/playground
> yarn percy exec -- cypress run

warning From Yarn 1.0 onwards, scripts don't require "--" for options to be forwarded. In a future version, any explicit "--" will be forwarded as-is to the scripts.
$ /Users/norfeldt/Repos/playground/node_modules/.bin/percy exec cypress run
› Warning: Skipping visual tests. PERCY_TOKEN was not provided.
...
TL;DR 解决方案

package.json



...
"scripts": {
"start": "react-scripts -r @cypress/instrument-cra start",
"start:silent": "BROWSER=none yarn start",
"start:server": "start-server-and-test start:silent http://localhost:3000",
...
"percy:local": "PERCY_TOKEN=$(grep 'PERCY_TOKEN.*' .env | sed 's/.*=//') PERCY_BRANCH=local yarn start:server 'percy exec cypress run'"
},
...

最佳答案

yarn 内部使用 sh执行脚本中给出的命令(cmd 在 windows 的情况下) - Source .这与 npm does as well 非常相似。 .
这里&&由 shell 处理,因此您的命令 yarn percy:local && yarn start:server percy:exec作为 2 个单独的子进程运行。这意味着 yarn percy:local在一个进程中运行并在其上下文中根据需要设置环境变量,但正在运行的第二个进程 yarn start:server percy:exec不知道进程 1 设置的环境变量。
让我们看看 OS X 是如何处理这个问题的:

  • &&
  • sh -c 'PERCY_TOKEN=asdfasdf; PERCY_BRANCH=local' &&  sh -c 'echo $PERCY_TOKEN'
    这不打印
  • 没有 &&
  • sh -c 'PERCY_TOKEN=asdfasdf; PERCY_BRANCH=local echo $PERCY_TOKEN'
    这将打印 asdfasdf我认为删除 &&cy:percy:local应该解决您的问题。
    编辑:评论中讨论的针对您的特定情况的解决方案
    正如此答案的第二点所述:stackoverflow.com/a/37141993/8266093 我建议您以 ENV_KEY1=value1 ENV_KEY2=value2 command 格式运行此脚本在你的情况下变成 PERCY_TOKEN=$(grep 'PERCY_TOKEN.*' .env | sed 's/.*=//') PERCY_BRANCH=local yarn percy exec cypress run .除此之外,如果单独运行它不是您的解决方案,您也可以添加您的 start-server yarn 命令。

    关于javascript - 节点JS : NOT able to set PERCY_TOKEN via package script with start-server-and-test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66333245/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com