小编Gob*_*ord的帖子

你如何阻止为Node.js(package.json)安装"devDependencies"NPM模块?

我在我的package.json文件(缩短版本)中有这个:

{
  "name": "a-module",
  "version": "0.0.1",
  "dependencies": {
    "coffee-script":      ">= 1.1.3"
  },
  "devDependencies": {
    "stylus":             ">= 0.17.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

我在Mac 10.6.8上使用NPM版本1.1.1.

当我从项目根目录运行以下命令时,它会安装dependencies devDependencies:

npm install
Run Code Online (Sandbox Code Playgroud)

我的印象是这个命令安装了devDependencies:

npm install --dev
Run Code Online (Sandbox Code Playgroud)

我如何才能使它npm install只安装dependencies(所以生产环境只获得那些模块),而像npm install --dev安装两者dependenciesdevDependencies

node.js npm

548
推荐指数
11
解决办法
29万
查看次数

使用fetch时拒绝承诺

我对如何正确使用fetch感到困惑.即使我收到错误状态,它似乎也解决了.以下代码是否正确(将获取包装在另一个承诺中)?

function a(url, config) {
  if (!config)
    config = {};

  config = Object.assign(config, {
    headers: {
      'content-type': 'application/json;charset=utf-8'
    }
  })
  return new Promise(
    function(resolve, reject) {
      fetch(url, config).then(
        function(res) {
          if (res.status == 200 && res.ok) {
            console.log("Promise resolved")
            resolve(res);
            return;
          }
          console.log("Promise rejected")
          reject(res);
        },
        function(rej) {
          console.log("promise rejected")
          reject(rej);
        }
      )
    }
  )
}

function b() {
  a('/test').then(
    function(res) {
      console.log('success');
      console.log(res)
    },
    function(rej) {
      console.log('Rejected');
      console.log(rej)
    }
  )
}

b();
Run Code Online (Sandbox Code Playgroud)
(以上代码应该通过控制台在chrome中正常运行...只需复制/粘贴)

javascript angularjs ecmascript-6 fetch-api

6
推荐指数
1
解决办法
1676
查看次数

关于使用 Chrome 更改 SameSite 的困惑

我需要一些帮助来理解我在描述 Chrome 的新 SameSite 限制的材料中找不到的案例。目前,我有一个托管站点的案例,该站点向 API 发出跨站点请求。API 使用 CORS 标头进行响应。详情如下:

Site: https://a.a.com
API: https://b.a.com

--API response headers

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://a.a.com

--cookie previously set with

Set-Cookie: value=somevalue; Path=/; Expires=<some time/date>; HttpOnly 
Run Code Online (Sandbox Code Playgroud)

我不希望 CORS 标头会影响任何事情(基于我所看到的所有内容,它从未提及 SameSite 更改),但无论如何我还是将它们放在这里。鉴于这种情况,当我将标志设置为:

chrome://flags/#same-site-by-default-cookies
chrome://flags/#cookies-without-same-site-must-be-secure 
Run Code Online (Sandbox Code Playgroud)

我希望浏览器阻止发送 cookie 值。这是因为我希望 cookie 被视为具有 SameSite=Lax 并且这些是跨站点请求。这不是实际发生的情况,cookie 已成功发送。对此进行测试时,我还尝试在任何请求和 POST 请求之间等待 3 分钟,以避免“Lax+POST”缓解,因为我们在每个响应上都设置了 cookie(具有更新的过期时间)。根据我正在阅读的有关更改的内容,我不明白为什么浏览器不会阻止此 cookie 的发送以及这些请求为什么会成功。

为了让事情变得更加混乱,我们在开发过程中遇到了以下场景:

Site: http://localhost
API: https://a.b.com

--API response headers

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost

--cookie previously set with

Set-Cookie: value=somevalue; Path=/; Expires=<some time/date>; HttpOnly 
Run Code Online (Sandbox Code Playgroud)

与描述的第一个场景不同,这些请求实际上阻止了 cookie 按预期发送(仅当启用了新的 chrome 标志时)。正如我所料,浏览器给出的警告消息与 …

google-chrome cross-site same-origin-policy cors samesite

6
推荐指数
1
解决办法
1850
查看次数