相关疑难解决方法(0)

Docker-compose:npm安装成功后,卷中没有node_modules

我有一个具有以下服务的应用程序:

  • web/ - 在端口5000上保存并运行python 3 flask Web服务器.使用sqlite3.
  • worker/- 有一个index.js文件,它是队列的工作者.Web服务器使用json API over port与此队列交互9730.工人使用redis进行存储.工作人员还将数据本地存储在文件夹中worker/images/

现在这个问题只涉及到了worker.

worker/Dockerfile

FROM node:0.12

WORKDIR /worker

COPY package.json /worker/
RUN npm install

COPY . /worker/
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

redis:
    image: redis
worker:
    build: ./worker
    command: npm start
    ports:
        - "9730:9730"
    volumes:
        - worker/:/worker/
    links:
        - redis
Run Code Online (Sandbox Code Playgroud)

当我运行时docker-compose build,一切都按预期工作,所有npm模块都/worker/node_modules按照我的预期安装.

npm WARN package.json unfold@1.0.0 No README data

> phantomjs@1.9.2-6 install /worker/node_modules/pageres/node_modules/screenshot-stream/node_modules/phantom-bridge/node_modules/phantomjs
> node install.js

<snip>
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时docker-compose up,我看到了这个错误:

worker_1 …
Run Code Online (Sandbox Code Playgroud)

node.js docker ubuntu-14.04 docker-compose

155
推荐指数
10
解决办法
7万
查看次数

更改node_modules位置

有没有办法更改node_modules文件夹位置?

例如:

- dir1
- dir2
- node_modules
Run Code Online (Sandbox Code Playgroud)

至:

- dir1
- dir2
    - node_modules
Run Code Online (Sandbox Code Playgroud)

node.js npm

60
推荐指数
1
解决办法
5万
查看次数

从不同的目录运行早午餐并使用相对路径

我们希望在多个项目中使用相同的构建系统.我有一个工作早午餐配置文件,我想放在一个git子模块中,以便可以在多个项目中引用该子模块,并且更改很容易传播(比复制和粘贴更不易碎,并设置brunch-config.js的权威来源) .

将brunch-config.js放在git子模块中会导致我的文件夹结构如下所示:

WebApp // git root
|---Brunch-Build-System // git submodule
|   |---brunch-config.js
|---node_modules
|---source // all the source code I want compiled
Run Code Online (Sandbox Code Playgroud)

早午餐运行假设brunch-config.js将与正在编译的源相同或更高.在此设置中,情况并非如此.我已经尝试修改我的brunch-config.js使用相对路径无济于事.这是我files目前的Brunch配置块,没有任何相对路径尝试:

files: {
  javascripts: {
    joinTo: {
      'js/lib.js': /^(?!source\/)/
    },
    entryPoints: {
      'source/scripts/app.jsx': {
        'js/app.js': /^source\//
      },
    }
  },
  stylesheets: {joinTo: 'css/core.css'}
}
Run Code Online (Sandbox Code Playgroud)

如果上面给出了所需的文件夹结构,我如何修改它以使用相对路径?这甚至可能吗?

javascript git git-submodules brunch

11
推荐指数
1
解决办法
524
查看次数

Docker 中的 Typescript:Visual Studio 代码主机 Typescript 编译器中“找不到模块”

项目设置

我有一个在本地 Docker 容器中运行的 Typescript 项目。我有以下两卷(在docker-compose.yml):

volumes:
  - .:/node/app
Run Code Online (Sandbox Code Playgroud)

第一个卷是绑定安装,用于将我的应用程序的源代码复制到容器中。

  - /node/app/node_modules/
Run Code Online (Sandbox Code Playgroud)

第二卷位于绑定安装座内。这意味着当npm install在容器内运行时,在项目的/node/app工作目录中,依赖项将仅安装到容器中的node_modules文件夹中。

我的理解是,这是允许主机和容器独立的常见做法node_modules。我进行此设置的目的是仅在主机中安装和运行一些工具,例如prettier,这样我就可以npm install --only=development在主机中安装 prettier ,因为它被指定为 devDependency ,现在我的编辑器可以使用 prettier 。

问题

在我的编辑器中,当打字稿编译器运行时,它显示“找不到模块”错误:

在 Visual Studio 代码中找不到模块错误

我的理解是发生这种情况是因为这些模块不在磁盘上。这是因为我上面的设置。我已经将node_modules包含非开发依赖项(如 React)的内容仅在容器内可用。

我的问题

我是 Docker 新手,我的理解是在容器内做事情通常很好,包括开发。我试图避免npm install在主机中,因为我并不真正想要或需要主机中的所有依赖项。在添加新的依赖项时,我也不想必须执行npm install两次,一次在主机上,一次在容器中。

如果导入的node_modules不存在,有没有办法阻止Typescript出错(比如只加载它们的类型定义,也许?),或者有没有办法以某种方式将Visual Studio Code中的Typescript编译器指向容器,这样它就可以无需在主机上安装它们即可看到它们,同时仍然允许我在主机上安装其他依赖项,例如更漂亮?

npm install或者是主机上的唯一方法?

typescript docker visual-studio-code

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

如何在Symfony的视图中引用node_modules组件

我已经使用安装了一个小部件npm。它安装在node_modules文件夹下。我需要在其中包含小部件的javascript和CSS文件,View但是由于它们不在Web文件夹中,因此无法使用以下方法将它们包括在内:

<link href="{{ asset('assets/someFolder/.css') }}" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

如何实现以上目标?

symfony npm

5
推荐指数
1
解决办法
3646
查看次数