关于如何从 nodejs 模块中删除全局上下文的任何想法?
我不是在寻找以下问题的解决方案,但如果您需要更多上下文,请继续。
我正在开发一个项目,我的用户可以上传他们自己的 nodejs 模块,如果它适合预定义的框架,它将在我们的一天中定期运行。显然,这是一个主要的安全问题。一个好的 90% 解决方案只是删除全局上下文。
嗨,我正在尝试运行 nodejs 脚本,它弹出以下错误消息:

我已socket.io使用以下命令全局安装:
>npm install -g socket.io
Run Code Online (Sandbox Code Playgroud)
但仍然没有运气。
有什么帮助吗?
如果npm install -g不推荐所有内容,并且我不想链接单个模块,我是否可以符号链接<some project>/node_modules到由多个项目共享的公共目录?
作为参考,repo 是https://github.com/microsoftly/luis-response-builder。
节点模块文件用tsc生成并输出到dist文件夹。我有一个 prepublishOnly 步骤,它删除了 dist 文件夹,运行 tsc,然后针对转译的 js 运行测试。当我发布得很好时,测试就通过了。
问题是,当我在其他任何地方安装项目时,dist 文件夹只包含路径为 dist/src/index.js 的文件。
我一生都无法弄清楚为什么文件在安装时丢失但在发布时没有。
在三个模型之间的连接操作后,我收到了一个有效的结果,但我会重命名 findAll 的连接操作生成的属性
询问:
const orchards = await db.Area.findAll({
include: [db.AreaCoordinate, db.Crop],
attributes: ['id', 'name']
});
Run Code Online (Sandbox Code Playgroud)
区域坐标模型:
module.exports = function (sequelize, DataTypes) {
var AreaCoordinate = sequelize.define('AreaCoordinate', {
latitude: {
type: DataTypes.STRING(45),
allowNull: true
},
longitude: {
type: DataTypes.STRING(45),
allowNull: true
}
}, {
classMethods: {
associate: function (models) {
AreaCoordinate.belongsTo(models.Area, {foreignKey: 'areaId'});
}
}
});
return AreaCoordinate;
};
Run Code Online (Sandbox Code Playgroud)
作物模型:
module.exports = function (sequelize, DataTypes) {
var Crop = sequelize.define('Crop', {
name: {
type: DataTypes.STRING(45),
allowNull: true
},
lang: { …Run Code Online (Sandbox Code Playgroud) 我想知道从设计或安全的角度来看,是否有任何缺点,拥有一个包含requires()我需要的所有模块的文件,然后将它们导出。这将使我无需跟踪每个文件中的所有模块。
例子:
// my_requires.js
const bodyParser = require('body-parser')
const parseForm = bodyParser.urlencoded({extended: false})
const DOMPurify = require('dompurify');
const {JSDOM} = require('jsdom');
const jwt = require('jsonwebtoken');
const passport = require('passport');
require('../config/passport')(passport)
module.exports = {
bodyParser: bodyParser,
parseForm: parseForm,
jwt: jwt,
passport: passport,
bcrypt: bcrypt
}
Run Code Online (Sandbox Code Playgroud)
然后在我需要它们的任何文件中,我只需要
const reqs = require('my_requires.js')
Run Code Online (Sandbox Code Playgroud)
我不知道使用这样的构造是否有任何缺点。由于模块都加载到全局空间中,我看不出我的方法有任何缺点?
我有一个使用 angular 6 编写的项目。我想将该项目上传到 GitHub,但是当我使用 GitHub Desktop 上传该项目时,除了 node_modules 文件之外,所有文件都被上传。
当我从 GitHub 下载项目并尝试运行时,由于 node_modules 文件未上传,项目无法运行。所以其他人也不能运行这个项目。
如果我可以在 GitHub 存储库中包含 node_modules 文件。它会运行。
那么,为什么 node_modules 文件没有上传到 GitHub ?以及如何将此文件上传到 GitHub 存储库?有什么建议吗?
我正在制作一个简单的 Node JS 应用程序。它在控制台上记录了大量信息。我想知道是否可以在不使用任何额外包或依赖项的情况下在 Node JS 命令行中添加水平线。如果命令提示符支持 HTML 元素,那么我可以使用类似console.log("<hr>");添加水平线的方法,但它不支持 HTML。
有什么办法吗?
我正在自学更多关于如何创建节点模块以及如何使用打字稿的知识。为了实现这一点,我尝试在本地创建自己的节点模块,并在项目中引用它 - 但是,打字稿似乎无法识别我的模块。
我创建的节点模块是一个用于进行矩阵/向量运算的简单库,因为我会玩弄这些东西。我在项目的 node_modules 目录中创建了一个文件夹,其中包含以下文件:
node_modules
XVectorMath
package.json
vectorMath.js
vectorMath.d.ts
Run Code Online (Sandbox Code Playgroud)
这是编译这些文件的单独打字稿项目的输出。这些是相关文件的内容:
XVectorMath/package.json
{
"name": "XVectorMath",
"version": "0.1.0",
"main": "vectorMath.js",
"types": "vectorMath.d.ts"
}
Run Code Online (Sandbox Code Playgroud)
XVectorMath/vectorMath.d.ts
export declare class Vector3 {
constructor(x?: number, y?: number, z?: number);
x: number;
y: number;
z: number;
angle(): number;
magnitude(): number;
addVector3(b: Vector3): Vector3;
subtractVector(b: Vector3): Vector3;
divide(a: number): Vector3;
scale(a: number): Vector3;
normalize(): Vector3;
dotProduct(b: Vector3): number;
}
export declare class Matrix3 {
constructor(m?: any);
value: number[][];
getRowVector(n: number): Vector3;
getColumnVector(n: number): Vector3;
multiplyMatrix3(m: Matrix3): …Run Code Online (Sandbox Code Playgroud) 应该docker-compose up --build不够?
这是我们的 Dockerfile:
FROM node:8.12.0-alpine
# Set app directory
WORKDIR /usr/src/app
# Install git in order to allow installing
# npm packages from Github
RUN set -xe \
&& apk add --no-cache git
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# Bundle app source
COPY . .
ENV NODE_ENV development
EXPOSE 8080
CMD ["npm","start"]
Run Code Online (Sandbox Code Playgroud)
还有我们的 docker-compose …
node-modules ×10
node.js ×7
javascript ×3
npm ×3
typescript ×2
angular ×1
docker ×1
dompurify ×1
express ×1
github ×1
module ×1
mysql ×1
nodes ×1
npm-publish ×1
sequelize.js ×1
socket.io ×1
symlink ×1