是否可以配置 npm 以devDependencies在运行命令时跳过漏洞审核npm install?
我试图运行一个节点应用程序失败,该应用程序在High Sierra和Windows 10上运行良好,但在Mojave 10.14.1上失败.这是运行gulp build_dev任务时显示的错误:
[23:44:42] Requiring external module babel-register
fs.js:25
'use strict';
^
ReferenceError: internalBinding is not defined
at fs.js:25:1
at req_ (/Users/user1/Documents/NodeProjects/myapp/node_modules/natives/index.js:137:5)
at Object.req [as require] (/Users/user1/Documents/NodeProjects/myapp/node_modules/natives/index.js:54:10)
at Object.<anonymous> (/Users/user1/Documents/NodeProjects/myapp/node_modules/vinyl-fs/node_modules/graceful-fs/fs.js:1:37)
at Module._compile (internal/modules/cjs/loader.js:707:30)
at Module._extensions..js (internal/modules/cjs/loader.js:718:10)
at Object.require.extensions.(anonymous function) [as .js] (/Users/user1/Documents/NodeProjects/myapp/node_modules/babel-register/lib/node.js:152:7)
at Module.load (internal/modules/cjs/loader.js:605:32)
at tryModuleLoad (internal/modules/cjs/loader.js:544:12)
at Function.Module._load (internal/modules/cjs/loader.js:536:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! myapp@1.0.0 dev: `node node_modules/gulp/bin/gulp.js build_dev`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the …Run Code Online (Sandbox Code Playgroud) 从Travis CI切换到GitHub Actions时,我想知道是否有一种方法可以在作业之间共享通用步骤。对于一个项目,我需要每个作业从 3 个操作开始:检查存储库代码、安装 Node.js v12、从缓存中恢复 node_modules(如果可用)。实际上,我为每个作业添加了这 3 个操作,虽然有效,但有点冗长。有没有办法说:“每个作业必须首先运行这些操作”或类似的话?
name: ci
on: [push, workflow_dispatch]
jobs:
setup:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '12'
- name: Cache node_modules
id: cache-node-modules
uses: actions/cache@v2
with:
path: node_modules
key: node-modules-${{ hashFiles('package-lock.json') }}
- name: Install dependencies
run: npm install
test_mysql:
runs-on: ubuntu-latest
needs: setup
steps:
- name: Check out repository code
uses: actions/checkout@v2
- name: Setup …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,我需要一个长时间运行的Selenium Web 驱动程序实例(我在无头模式下使用Chrome 驱动程序 83.0.4103.39)。基本上,该应用程序不断从队列中提取 url-data,并将提取的 url 提供给 Selenium,Selenium 应该在网站上执行一些分析。许多这些网站可能已关闭、无法访问或损坏,因此我将页面加载超时设置为 10 秒,以避免 Selenium 永远等待页面加载。
我在这里遇到的问题是,经过一些执行时间(假设 10 分钟)Selenium 开始给出Timed out receiving message from renderer每个 url 的错误。最初它工作正常,它可以正确打开好的网站并在坏网站上超时(网站无法加载),但一段时间后它开始对所有内容超时,即使是应该正确打开的网站(我已经检查过,它们在 Chrome 浏览器上正确打开)。我很难调试这个问题,因为应用程序中的每个异常都被正确捕获。我也注意到这个问题只发生在headless模式中。
这是应用程序的简化版本:
import traceback
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
width = 1024
height = 768
chrome_options = Options()
chrome_options.page_load_strategy …Run Code Online (Sandbox Code Playgroud) 以下Webpack 开发服务器配置在 macos 系统上运行不会出现错误:
module.exports = {
// [...]
devServer: {
host: 0.0.0.0,
port: 8080,
contentBase: "/dist",
hot: true,
inline: true,
watchOptions: {
poll: true
}
},
// [...]
}
Run Code Online (Sandbox Code Playgroud)
我可以从连接到同一网络并使用机器的本地 IP (192.168.1.65:8080) 的移动设备访问 Web 应用程序。
同样的配置在Windows上不起作用,似乎无法在浏览器上打开0.0.0.0。但使用 0.0.0.0 以外的任何其他 IP 都不允许从移动设备进行访问。有谁知道如何在 Windows 上解决这个问题?
第一次尝试木偶戏,真是太棒了。单击按钮后,我需要等待页面获取并呈现新数据。这不会导致导航(网址相同),因此以下代码不起作用(它给出超时异常):
await Promise.all([
myButton.click()
page.waitForNavigation()
])
Run Code Online (Sandbox Code Playgroud)
等待页面在点击时获取/呈现异步数据的正确方法是什么?
在 iOS 13 中,Apple 引入了 API DeviceOrientationEvent.requestPermission。它必须由用户操作(单击、点击或等效操作)触发。我的问题是结果似乎被缓存了,所以如果用户拒绝许可,我不能再次请求访问(使用缓存值自动实现承诺)。有什么方法可以强制设备忘记缓存的值并再次请求用户访问方向数据的权限(我的意思是它应该再次显示用户可以允许或拒绝访问的弹出窗口)?
这是相关代码:
if (DeviceOrientationEvent && typeof(DeviceOrientationEvent.requestPermission) === "function") {
const permissionState = await DeviceOrientationEvent.requestPermission();
if (permissionState === "granted") {
// Permission granted
} else {
// Permission denied
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个csr_matrix格式的稀疏矩阵。对于每一行,我需要从非零元素中减去行平均值。必须根据行的非零元素的数量(而不是行的长度)计算均值。我找到了一种使用以下代码计算行均值的快速方法:
# M is a csr_matrix
sums = np.squeeze(np.asarray(M.sum(1))) # sum of the nonzero elements, for each row
counts = np.diff(M.tocsr().indptr) # count of the nonzero elements, for each row
# for the i-th row the mean is just sums[i] / float(counts[i])
Run Code Online (Sandbox Code Playgroud)
问题是更新部分。我需要一种快速的方法来做到这一点。实际上我正在做的是将 M 转换为lil_matrix并以这种方式执行更新:
M = M.tolil()
for i in xrange(len(sums)):
for j in M.getrow(i).nonzero()[1]:
M[i, j] -= sums[i] / float(counts[i])
Run Code Online (Sandbox Code Playgroud)
这是缓慢的。对更快的解决方案有什么建议吗?
假设我有一个定义如下的类:
class MyClass {
constructor (a) {
this.a = a;
}
_onPropertyChanged() {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
每当 MyClass 实例的属性“a”发生更改时,我都想在该实例上触发 _onPropertyChanged 方法。使用 ECMAscript 6 实现这一目标的最佳(性能最高)方法是什么?
当在node.js应用程序中使用通行证作为Oauth 2.0流(例如Facebook,Twitter等)的身份验证中间件时,我想知道在应用程序中存储访问令牌和刷新令牌的常见/最佳做法是什么。我不需要将用户帐户存储在应用程序中,只需要访问令牌即可调用API。
例如,如果我想向OAuth 2.0身份验证提供程序验证用户以获取访问令牌以用于基于oauth的API,则可以使用以下通行证策略:
passport.use(new OAuth2Strategy({
authorizationURL: 'https://www.example.com/oauth2/authorize',
tokenURL: 'https://www.example.com/oauth2/token',
clientID: EXAMPLE_CLIENT_ID,
clientSecret: EXAMPLE_CLIENT_SECRET,
callbackURL: "http://localhost:3000/auth/example/callback"
},
function(accessToken, refreshToken, profile, cb) {
// handle user profile and tokens
// [...]
}
));
Run Code Online (Sandbox Code Playgroud)
如何以及在哪里安全地存储令牌?可以将令牌附加到用户个人资料吗?像这样:
function(accessToken, refreshToken, profile, cb) {
profile.accessToken = accessToken;
profile.refreshToken = refreshToken;
process.nextTick(() => return cb(null, profile))
}
Run Code Online (Sandbox Code Playgroud) javascript ×5
node.js ×3
npm ×2
python ×2
access-token ×1
audit ×1
class ×1
ecmascript-6 ×1
github ×1
gulp ×1
iframe ×1
ios ×1
macos-mojave ×1
mean ×1
node-gyp ×1
oauth-2.0 ×1
passport.js ×1
puppeteer ×1
renderer ×1
scipy ×1
selenium ×1
travis-ci ×1
updates ×1
watch ×1
webpack ×1